grep文本搜索工具
简介:
grep:使用基本正则表达式定义的模式来过滤文本的命令,并将符合模式的文本行显示出来。grep(Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep(fgrep:不支持正则表达式 没有元字符时可使用此命令快速查找)。
格式:grep [OPTIONS] PATTERN [FILE...]
主要参数:
-i, --ignore-case忽略大小写
-color[=WHEN], --colour[=WHEN]加颜色
#alias grep='gerp --color'
-v, --invert-match显示没有被模式匹配到的行
-o:只显示被模式匹配到的字符串
-E:使用扩展正则表达式
-A #:显示的匹配后面#行
# grep --color -A 2 '^fpu' /proc/cpuinfo
-B #:显示的匹配前面#行
-C #:显示的匹配前后面#行
正则表达式:REGular EXPression,REGEXP
元字符:
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
字符集合:
[:space:]空白字符(新行,空格,制表符)
[:punct:]标点符号
[:lower:]小写字母
[:upper:]大写字母
[:alpha:]大小写字母
[:digit:]数字
[:alnum:]数字和大小写字母
[:graph:]非空字符(非空格,控制字符)
[:print:]非字符(包括空格)
[:cntrl:]控制字符
[:xdigit:]十六进制数字(0-9,a-f,A-F)
#grep '[[:digit:]]&' /etc/inittab
匹配次数(贪婪模式:尽可能多的匹配)
*:匹配其前面的字符任意次
.*:任意长度的任意字符
?:匹配其前面的字符1或0次
\{m,n\}:匹配其前面的字符至少m次,至多n次
位置锚定
^:锚定行首,此字符后面的任意内容必须出现在行首
#grep '^r..' /etc/passwd
$:锚定行尾,此字符前面的任意内容必须出现在行尾
#grep 'b..h$' /etc/passwd
^$:空白行
\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
#grep "root\>" test.txt
#grep "\<root" test.txt
#grep "\<root\>" test.txt
分组:
\(\)
\1,\2,\3,...
\(ab\)*
后向引用
\1:引用第一个左括号
转载于:https://blog.51cto.com/seraph520/1832062