grep是一款文本过滤工具。
作用:
文本搜索的工具,根本用户指定 “模式“对目标文本逐行匹配检查:打印匹配到 行
打印匹配到的行。
模式:
是由正则表达式字符及文本字符所编写的过滤条件。
正则表达式分为:
基本正则表达式 : BRE
扩展正则表达式 : REE
grep工具支持基本正则表达式,egrep支持扩展的正则表达式,并且grepd -E选项其实就是egerp
正则表达式 REFEXP:由一类特殊字符及文编编写的模式,其中有些字符不表示字符字面的意义,而表示控制或通配的功能
grep基本语法
grep [OPTIONS] PATTER [FILE…]
- -color 高亮色彩显示匹配到的字符串
-v:显示不能被 pattern 匹配到的行
-i:忽略字符串大小写
-o:仅显示匹配到的字符串
-q:静默模式,不输出任何信息
- 基本正则表达式元字符
- 字符匹配
- .:匹配任意单个字符
- [ ]:匹配指定范围内的任意单个字符
- [^]:匹配指定范围外的任意单个字符
- 次数匹配
用于在要指定次数的字符后面,用于指定前面的字符要出现的次数
- .*:任意长的任意字符
- \?:匹配其前面的字符0或1次
- **\+:匹配前面字符至少1次**0-次
- \{m\}:匹配前面的字符m次
- \{m,n\}:匹配前面字符至少m次,至多n次
- \{0,n\}:匹配前面的字符至多n次
- \{m,\}:匹配前面的字符至少m次
- 位置锚定
对特定位置进行定位
- ^*:行首锚定:用于模式的最左侧
- $*:行尾锚定:用于模式的最右侧
- \<或\b*:词首锚定:用于单词的最左侧
- \>或\b*:词尾锚定:用于单词的最右侧
- 字符匹配
分组:是指将一个或多个字符捆绑在一起,当做一个整体进行处理,其符号为:\(\)
如:\(qw\)*ab表示qw这个整体可以出现任意次
注意:
1,分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1, \2, \3,……
\1:从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符:如:\(xy\+\(ab\)\)中\1表示:xy\+(ab\)* ::\2表示:ab
2,后向引用:引用前面的分组括号中的模式所匹配的字符,而非模式本事
例题:
1,显示/proc/meminif 文件中以大小或小写或S开头的行
- 扩展正则表达式元字符
- 字符匹配
- [ ]:匹配指定范围外的任意单个字符
- [^]:匹配指定范围外的任意单个字符
扩展表达式基本和基本表达式相同
- 次数匹配
- .*:任意长的任意字符
- ?:匹配其前面的字符0或1次
- +:匹配前面字符至少1次
- {m}:匹配前面的字符m次
- {m,n}:匹配前面字符至少m次,至多n次
- {0,n}:匹配前面的字符至多n次
- {m,}:匹配前面的字符至少m次
- 位置锚定
- 对特定位置进行定位
- ^*:行首锚定:用于模式的最左侧
- $*:行尾锚定:用于模式的最右侧
- \<或\b*:词首锚定:用于单词的最左侧
- \>或\b*:词尾锚定:用于单词的最右侧
- 字符匹配
分组:扩展正则表达式的位置锚定和基本正则表达式相同,这里不再重复说明。
();用括号括起来表示引用的内容,不需要专义。
后向引用:\1,\2,\3
或者:
a|b:或者b
con(C|c)at:conCat或者concat
扩展正则表达式的使用语法:
grep -E 'PATTERN' FILE...
egrep 'PAATTERN' FILE...
例题:使用扩展的正则表达式
找出:/etc/rc.d/init.d/functions 文件中某单词后跟一组小括号”()“行: