grep命令:
文本过滤(按行过滤)
参数
-v 取反
-i 忽略大小写
-n 显示行号
-c 统计匹配行数
-q 静默执行(不显示执行结果)
-o 仅显示搜索到的字符串
-A #(数字) 包含关键字的后续几行
-B #(数字) 包含关键字的前面几行
-C #(数字) 包含关键字的前后几行
-w 匹配整个单词
-E 相当于fgrep
正则表达式
REGEXP匹配字符串
正则表达式元字符
\ 转义字符
. 匹配任意单个字符
[] 匹配指定范围外的任意单个字符
[^] 匹配除了[]内单一字符
[:alnum:] 字母和数字
[:alpha:]A-Z,a-z 代表任何英文大小写字符
[:upper:]A-Z 大写字母
[:lower:]a-z 小写字母
[:blank:] 空白字符
[:space:] 水平和垂直的空白字符
[:cntrl:] 不可打印的控制字符(退格,删除,警铃)
[:digit:] 十进制数字
[:xdigit:] 十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印的空白字符
[:punct:] 标点符号
正则表达式位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$空行 空行
^[[:space;]]*$ 空白行
\<或\b 词首锚定,用于单词模式的左侧
\>或\b 词尾锚定,用于单词模式的右侧
\<PATTERN\> 匹配整个单词
正则表达式分组
\(\)将一个或多个字符捆绑在一起,当作一个整体进行处理,如\(root\)\+
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,
这些变量的命名方式为:\1,\2,\3,..
\1 表示从左侧起第一个左括号以及为止匹配右括号之间的模式所匹配到 的字符
示例: \(string1\+\(string2\)*\)
\1 : string1\+\(string2\)*
\2 : string2
后向引用:引用前面的分组括号中模式所匹配字符,而非模式本身
或者\|
示例 : a\|b: a或b C\|cat: C或cat \(C\|c\)at:Cat或cat
正则表达式次数匹配
.*: 匹配前面字符任意次
\?: 0或1次
\+: 1次或多次
\{n\}: 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
egrep及扩展的正则表达式
egrep命令
egrep=grep-E
扩展正则表达式
扩展正则表达式元字符
. 匹配任意单个字符
[] 匹配指定范围外的任意单个字符
[^] 字母和数字
扩展正则表达式位置锚定
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
\<或\b 词首锚定,用于单词模式的左侧
\>或\b 词尾锚定,用于单词模式的右侧
扩展正则表达式分组
()
后向引用:\1,\2,…
例 : a|b: a或b C|cat: C或cat (C|c)at:Cat或cat
扩展正则表达式次数匹配
*: 匹配前面字符任意次
?: 0或1次
+: 1次或多次
{m}: 匹配m次
{m,n}: 至少m次,至多n次
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/93828