常用选项有:grep-v:反向,显示不能够被模式匹配到的行
grep-o:仅显示被模式匹配到的字符串,而非整行
grep-i:不区分字符大小写
grep-E:扩展正则表达式
下面先介绍基本正则表达式常用到的元字符
字符匹配:
.:匹配一行中任意单个字符,如:grep“r..t”
查找文件中字母r开头中间跟任意两个字符字母t结尾的单词的行
[]:指定范围内的任意单个字符,如:grep[r]查找文件中包含字母“r"的行
[^]:匹配指定范围外的任意单个字符,如:grep[^r]查找文件中除了字母“r”以外的任意字符
次数匹配:
*:匹配任意次(包括0次),如:grep“x*y”表示匹配y前面字符x出现0次或任意次的字符
\?:匹配其前面字符0次或1次,如:grep”x\?y"表示匹配y前面字符x出现0次或1次
\{m\}:指定匹配其前面字符m次,如:grep"x\{2\}y“表示精确匹配y前面字符x出现2次
\{m,n\}:指定匹配其前面字符出现至少m次,至多n次,如:grep”x/{1,5}y“表示精确匹配y前面字符x出现最少1次最多5次
\{0,n\}:指定匹配其前面字符至多出现n次,如:grep”x\{0,3\}y“表示精确匹配y前面字符x最多出现3次
位置锚定元字符:用于指定字符出现的位置
^:锚定行首;如:grep^root表示匹配以单词root开头的行
$:锚定行尾;如:grep/bin/bash$表示匹配以/bin/bash结尾的行
^$:空白行;如:grep”^$“表示匹配文件中所有的空白行
\<或\b:锚定词首;如grep”\<root"表示精确匹配包含"root“开头的单词的行
>\或\b:锚定词尾;如grep”root\>“表示匹配包含”root“结尾的单词的行
分组:\(\);例如grep”\(ab\)*xy“,表示匹配x前面ab为一组的字符出现任意次
引用:\1;后向引用,引用前面的第一个
左括号以及与之对应的右括号中的模式所匹配到的内容
grep"\(a6b\)xy\1"表示能够匹配到a6bxya6b
\2:前向引用两次,如grep"\(a6b\)xy\2"表示能够匹配到a6bxya6ba6b
egrep:扩展正则表达式,等同于”grep-E“,与grep用法大致相同,不过元字符不用转义
字符匹配:
.:任意单个字符
[]:指定范围内的任意单个字符
[^]:指定范围外的任意单个字符
次数匹配:
*:匹配其前面的字符任意次
?:匹配其前面的字符0或1次
+:匹配其前面的字符至少1次
{m}:匹配其前面的字符m次
{m,n}:至少m次,至多n次
{m,}:至少m次
{0,n}:至多n次
锚定;
^:行首
$:行尾
\<,\b:词首
\>,\b:词尾
分组:()
|:或者;ac|bc表示ac或bc,字符串进行或者匹配
a(c|b)c表示acc或abc,使用分组可以单个字符进行或者匹配