grep:global research expression print
是一种强大的文本搜索工具。根据关键字匹配行,然后打印含有关键字的行的内容。
基本格式:grep “关键字”
grep “关键字” 目录 在该目录下找含有关键字的文件。
例:
几个常见参数:
-c 计算找到关键字的次数。
-i 忽略大小写。
-v 把没有匹配到的行显示出来。
-o 只显示被匹配到的字符串
-A num 只显示匹配到的那一行的后几行。
-B num 只显示匹配到的那一行的前几行。
正则表达式:
. 任意单个字符
例:
a.b 表示以a开头,中间为一个任意字符,以b结尾的三个字符。
* 前面一个字符在此重复零次或更多次。
例:
a*b 表示a出现任意次,b出现一次的行。(可出现的情况ab、b(a在此出现0次)、aab)
aa*b 第一个a表示以a开头,第二个a表示a出现任意次,最终以b结尾的字符(可出现的情况有ab、aab、aaab,不可能出现b)
[范围] 这个字符在方括号的范围内。
[^范围] 该字符不在这个范围的任意字符。
.*任意长度的字符
a.*b 表示以a开头,以b结尾,a与b中间有任意长度的任意字符组成的字符串。
? 匹配前面的字符出现一次或0次,用的时候要有转义字符 (\?)
add:表示a出现一次,第二个d结尾,第二个d表示a出现0次,d结尾。
d:表示a出现0次,d结尾。
{m,n\}:前面一个字符最少出现m次,最多出现n次。使用时要添加转义字符( \{m,n\} )
a\{3,9\}d:表示a要出现3~9次,d结尾的字符串。
aaaaaaad:表示a出现7次(在3次和9次之间),d结尾的字符串。
^ 行首 “^root”:匹配以root开头的行。
$ 行尾 “root$”:匹配以root结尾的行。
^任意字符$ 只表示一行中只有该字符串(开头没有空格,结尾也没有空格)的行。
例:
^root$ 只表示这一行从开头只有一个root的字符,结尾没空格。
^$ 空行(和^ $是有区别的,空格也是特殊的字符。)
\<任意字符:词首。以该词开头
任意字符\>:词尾。以该词结尾。
注:正则表达式具有贪婪模式,它会尽可能长的匹配文本,典型情况如下: