Unix 的grep家族包括grep,egrep和fgrep。Grep的命令在文件中搜索正则表达式,并打印所有包含这些表达式的行。Egrep和fgrep命令只跟grep有很小的不同。Egrep是grep的扩展,支持更多的RE元字符。Fgrep就是fixed grep 或者 fast grep,它们把所有的字母都看作单词。这就是说,正则表达式的元字符不再特殊――他们只表示其自身的字母意思。
Grep的意思是“全面搜索正则表达式并把找到的行打印出来(global search regular expression(RE) and print out the line)。
Grep的正则表达式元字符集(基本集)
元字符 | 功能 | 例子 | 匹配什么 |
^ | 锚定行的开始 | /^love/ | 匹配所有以love开头的行 |
$ | 锚定行的结束 | /love$/ | 匹配所有以love 结束的行 |
. | 匹配一个字符 | /l..e/ | 匹配这样的行,这些行包含这样的字符:第一个字符是l,紧跟着两个字符,然后是e |
* | 代表0个或多个先前字符 | /*love/ | 匹配所有这样的行,有0个或多个空格,空格后跟着love |
[] | 匹配字符组中的一个字符 | /[Ll]ove/ | 匹配所有包含love或者Love的行 |
[^] | 匹配一个不在范围内的字符 | /[^A-Z]ove/ | |
< | 锚定单词的开始 | 匹配所有这样的行,这些行包含以love开头的单词(vi和grep支持这个功能) | |
> | 锚定单词的结束 | Love> | 匹配所有这样的行,这些行包含以love结束的单词(vi和grep支持这个功能) |
(..) | 标记后面用到的匹配字符 | /(love)able1rs/ | 最多可以使用9个标签。第一个标签是模板最左边的部分。在本例子中,模板love保存的标签为1,后面的1指得就是love;本例子搜索的是这样的行,这些行包含这样的字符,在Loveabel后面跟着lovers |
x{m} | M次复制字符x | ||
x{m,} | 至少m次复制字符x | ||
x{m,n} | 至少m次,至多n次复制字x | ||
w | 文字和数字字符,[A-Za-z0-9] | Lw*e | 匹配一个l字符,紧跟着0个或多个文字或数字字符,然后是e |
W | 同上 | ||
b | 单词分界线 | bloveb | 仅仅匹配单词love |
扩展集(用于egrep和grep-E)
+ | 匹配一个或者多个先前字符 | [a-z]+ove | 匹配一个或者多个小写字符且后面是ove的, |
? | 匹配0个或者多个先前字符 | Lo?ve | P匹配l后面有一个或者没有o,然后是ve |
a|b|c | 匹配a或b或c | Love|hate | 匹配love或hate其中一个 |
() | 字符组 | Love(able|rs)(ov)+ | 匹配loveable或lovers,匹配一个或多个ov |
(…)(…)12 | 标记匹配字符串 | (love)ing | 标签标记出寄存器的一部分,并稍后替换模板。该模板叫做1,并可反复引用。在表达式中最多可以使用9个这样的标签。例如,模板love被保存在寄存器1中并稍后替换标签叫做1 |
x{m} | 重复字符X,m次,至少m,或者m次和n次之间。 | ||
x{m,} | |||
x{m,n} |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/312079/viewspace-245420/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/312079/viewspace-245420/