grep
主要参数
-a 将binary文件以text文件的方式搜寻数据
-c 只输出匹配行的计数,计算找到匹配的次数
-I(大写i) 不区分大小写(只适合用于单字符)
-h 查询多文件时不显示文件名
-l 查询多文件时只输出包含匹配字符的文件名
-n 显示匹配行及行号
-s 不显示不存在或无匹配文本的错误信息
-v 显示不包含匹配文本的所有行
--color=auto 可以将找到的关键字部分加上颜色的显示
正则主要参数
忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
< 从匹配正则表达式的行开始
> 到匹配正则表达式的行结束
[] 单个字符,如[A]即A符合要求
[ - ] 范围,如[a-z]
. 所有的单个字符
*表示有字符,长度可以为0
实例
#grep ‘test’ d*
显示所有以d开头的文件中包含test的行
#grep ‘test’ aa bb cc
显示在aa,bb,cc文件中匹配test的行
#grep ‘[a-z]{5}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行
#grep ‘w(es)t.*1’ aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(1),找到就显示该行。如果用egrep或grep –E,就不用””号进行转义,直接写成’w(es)t.*1’就可以了
#dmesg | grep –A3 –B2 “ech” (A后,B前)
显示关键字所在行和它的前两行与后三行,多个文件之间--分隔
#grep –r ‘ech’ *
搜索当前目录及其子目录下所有文件有ech的行,显示所有行及其相对路径和文件名
#grep –l –r ‘ech’ *
搜索当前目录及其子目录下所有文件有ech的行,只显示相对路径和文件名
#grep –n ‘t[ae]st’ test.txt
查找test和tast
#grep ‘[^g]oo’ test.txt
搜索有oo的行,但不想要oo前面有g,如果行里除了有goo还有其他的如too,也是符合匹配,如果是goooooo也是符合匹配
#grep ‘[^a-z]oo’ test.txt
搜索有oo的行,但是不要前面有小写字节的
#grep ‘^the’ test.txt
搜索以the开头的行
#grep ‘^ [a-z]’ test.txt
搜索以小写字节开头的行
#grep ‘.$’ test.txt
搜索以小数点.结尾的行
#grep ‘^$’ test.txt
搜索空白行
#grep ‘g..d’ test.txt
搜索开头是g而结束是d,一共四个字节的行
#grep ‘g*’ test.txt
搜索开头是g的字串的行
#grep ‘o{2}’ test.txt
搜索两个o字串的行
#grep ‘ab{2,5}a’ test.txt
搜索a后面2到5个b,然后再接一个a的字串的行
#grep ‘ab{2,}a’ test.txt
搜索a后面2个以上的b,然后再接一个a的字串的行
#egrep ‘NW|EA’ test.txt
打印所有包含NW或EA的行,如果使用grep就不会查出结果
#grep ‘NW|EA’ test.txt
加个,grep会自动启用-E
#egrep ‘3+’ test.txt
#grep –E ‘3+’ test.txt
#grep ‘3+’ test.txt
搜索所有包含一个或多个3的行
#egrep ‘(no)+’ test.txt
搜索一个或者多个连续的no的行