Linux三剑客之grep
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的行