grep、egrep命令
本文中主要介绍了linux系统下grep、egrep命令和正则表达式的基本参数和使用格式、方法。
1. Grep简介
grep (global search regular expression_r(RE) and print out theline) (全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
格式:grep [options] ‘PATERN‘ file,...
--color=auto
2.Grep命令选项
-a :在二进制文件中,以文本文件的方式搜索数据
-? : 同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2 行。
-b:--byte-offset
打印匹配行前面打印该行所在的块号码。
-c,--count
只打印匹配的行数,不显示匹配的内容。
-f File,--file=File
从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。
-h,--no-filename
当搜索多个文件时,不显示匹配文件名前缀。
-i,--ignore-case
略大小写差别。
-q,--quiet
取消显示,只返回退出状态。0则表示找到了匹配的行。
-l,--files-with-matches
打印匹配模板的文件清单。
-L,--files-without-match
打印不匹配模板的文件清单。
-n,--line-number
在匹配的行前面打印行号。
-s,--silent
不显示关于不存在或者无法读取文件的错误信息。
-v,--revert-match
反检索,只显示不匹配的行。
-w,--word-regexp
如果被\<和\>引用,就把表达式做为一个单词搜索。
-V,--version
显示软件版本信息。
●字符匹配:
[:alnum:] 所有字母和数字字符
[:alpha:] 字母字符
[:digit:] 数字字符[0-9]
[:graph:] 非空字符(非空格、控制字符)
[:lower:] 小写字符[a-z]
[:cntrl:] 控制字符
[:print:] 非空字符(包括空格)
[:punct:] 特殊符号
[:space:] 所有空白字符(新行,空格,制表符)
[:upper:] 大写字符[A-Z]
[:xdigit:] 十六进制数字(0-9,a-f,A-F)
●次数匹配:用来匹配其前面的字符的次数
*:任意一次 x*y,可以匹配到xxy, xy, y;
\?:0次或一次 x\?y,xy,y,xxy
\{m\}:匹配m次
\{m,n\}:出现m到n次
\{m,\}:至少出现m次;
\{0,n\}:至多出现n次;
●位置锚定:用于指定字符出现的位置
^:锚定行首 ^Char
$:锚定行尾 char$
^$:空白行
\<char:锚定词首 \bchar
char\>:锚定词尾 char\b
分组:\(\) \(ab\)*xy
●引用:
\1:前向引用,应用前面的第一个左括号以及与之对应的右括号中的模式所匹配 到的内容\(a.b\)xy\1:abxy,
\2:...
4、egrep
egrep:使用扩展正则表达来构建模式,相当于grep -E是grep的扩展,支持更多的re元字符.linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
补充:
●次数匹配:(扩展功能中,不用使用\来转义,\可以省略)
*:匹配其前面的字符任意次:
{m}:匹配m次
{m,n}:出现m到n次
{m,}:至少出现m次;
{0,n}:至多出现n次;
|:或者,ac | bc:ac或bc,a(c|b)c:acc或abc
grep -E "con(C|c)at" conCat或concat
原文:http://lemidi.blog.51cto.com/8601832/1360790