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的行
原文地址:https://www.cnblogs.com/chy-op/p/9751731.html