码迷,mamicode.com
首页 > 其他好文 > 详细

Grep家族和正则表达式详解

时间:2016-03-08 13:40:59      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:正则表达式   linux   grep家族   元字符   grep命令   选项   

1.grep家族的概念

1.grep家族概念


grep : 支持使用基本扩展表达式

egrep:支持使用扩展正则表达式

fgrep:不支持使用正则表达式

作用:强大的文本搜索工具,根据用户指定的“pattern(过滤条件)”对目标文本逐行进行匹配检查,打印出符合条件的行

pattern:由正则表达式的元字符及文本字符所编写出的过滤条件


2.grep命令详解


用法:grep [OPTIONS] PATTERN [FILE]...

常用选项:
--color=auto:对匹配到的文本着色后高亮显示
-i:不区分字符大小写
-o:仅显示匹配到的文本自身
-v,--invert-match:反向匹配
-E:支持扩展的正则表达式
-q,--quiet,--silient:静默模式,不输出任何信息
-F :支持使用固定字符串,不支持正则表达式,相当于fgrep
-G, --basic-regexp :支持使用基本正则表达式
-p, --perl-regexp :支持使用pcre正则表达式
-e PATTERN, --regexp=PATTERN:多模式机制
-f FILE, --file=FILE:FILE为每行包含一个pattern的文本文件,及grep script
-A NUM, --after-context=NUM:显示匹配到的后面几行
-B NUM, --before-context=NUM:显示匹配到的前面几行
-C NUM, -NUM, --context=NUM:显示匹配到的前后各几行


使用示例:

技术分享

技术分享

由于grepegrep会用到正则表达式,所以在后面会结合正则表达式再一起演示。


3.正则表达式作用及元字符


正则表达式由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能。

正则表达式引擎:利用正则表达式模式分析给定文本的程序。

而正则表达式又分为两类:

(1)基本正则表达式

(2)扩展正则表达式


技术分享


注意,基本正则表达式和扩展正则表达式是有所不同的!


技术分享


4.grep命令结合正则表达式的应用


(1)字符匹配

找出 /etc/passwd文件中带有nologin的行

grep "[nologin]" /etc/passwd


(2)次数匹配

找出 /etc/passwd文件中的三位或四位数

grep -o "\<[0-9]\{3,4\}\>" /etc/passwd
egrep -o "\<[0-9]{3,4}\>" /etc/passwd


(3)位置锚定

显示/etc/passwd文件中不以bash结尾的行

grep -v "bash$" /etc/passwd


(4)分组应用

在/etc/passwd找出其用户名与shell名相同的用户

egrep "^([a-z0-9]+)\>.*\1$" /etc/passwd


(5)综合应用

找出ifconfig命令结果中的IP地址

ifconfig | egrep "\<inet[[:space:]]+.*[0-9]\>"

找出/etc/grub2.cfg文件中,以至少一个空白字符开头,后面又跟了非空白字符的行

egrep "^[[:space:]]+[^[:space:]]*" /etc/grub2.cfg

找出/proc/meminfo文件中,所有以大写或小写c开头的行;至少用三种方式实现

egrep "^(c|C)" /tmp/meminfo
grep "^[Cc]" /tmp/meminfo
grep -i "^c" /tmp/meminfo




本文出自 “学习是永不贬值的投资” 博客,请务必保留此出处http://ch666.blog.51cto.com/10870222/1748685

Grep家族和正则表达式详解

标签:正则表达式   linux   grep家族   元字符   grep命令   选项   

原文地址:http://ch666.blog.51cto.com/10870222/1748685

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!