Linux命令之 grep


grep


grep [options] [-e PATTERN | -f FILE] [FILE...]

Grep搜索以ILE命名的文件输入 (或者是标准输入,如果没有指定文件名,或者给出的文件名是 - 的话),寻找含有与给定的模式 PATTERN 相匹配的内容的行。 默认情况下, grep 把含有匹配内容的行打印出来。另外,也可以使用两个变种程序 egrep 和 fgrep 。 egrep grep -E 相同。 fgrep 与 grep -F 相同。


选项 OPTIONS


-A NUM

        打印出紧随匹配的行之后的下文 NUM 行。

-B NUM

        打印出紧随匹配的行之前的下文 NUM 行。

-C NUM

        打印出匹配的行的上下文前后各 NUM 行。

--color=auto

        将匹配的模式用颜色高亮显示。

-v, --invert-match

        改变匹配的意义,只选择不匹配的行。

-c, --count

        禁止通常的输出;作为替代,为每一个输入文件打印一个匹配的行的总数。如果使用 -v, 将是不匹配的行的总数。

-n, --line-number

        在输出的每行前面加上它所在的文件中它的行号。

-i, --ignore-case

        忽略模式 PATTERN 和输入文件中字母的大小写。

-h, --no-filename

        当搜索多个文件时,禁止在输出的前面加上文件名前缀。

-q, --quiet, --silent

        安静。不向标准输出写任何东西。如果找到任何匹配的内容就立即以状态值 0 退出,即使检测到了错误。

-l, --files-with-matches

        禁止通常的输出;作为替代,打印出每个在通常情况下会产生输出的输入文件的名字。对每个文件的扫描在遇到第一个匹 配的时候就会停止。

-m NUM, --max-count=NUM

        在找到 NUM 个匹配的行之后,不再读这个文件。如果输入是来自一个普通文件的标准输入,并且已经输出了NUM个匹配的行,grep保证标准输入被定位于退出时的最后一次匹配的行之后,不管是否指定了要输出紧随的下文的行。这样可以使一个调用程 序恢复搜索。当 grep 在 NUM 个匹配的行之后停止,它会输出任何紧随的下文的行。当使用了 -c 或 --count 选项的时候, grep 不会输出比 NUM 更多的行。当指定了 -v 或 --invert-match 选项的时候, grep 会在输出 NUM 个不匹配的行之后停止。


-f FILE, --file=FILE

        从文件 FILE 中获取模式,每行一个。空文件含有0个模式,因此不匹配任何东西。

-R, -r, --recursive

        递归地读每一目录下的所有文件。这样做和 -d recurse 选项等价。

-D ACTION, --devices=ACTION

        如果输入文件是一个设备,FIFO 或是套接字 (socket) ,使用动作 ACTION 来处理它。默认情况下,动作 ACTION 是 read ,意味着设备将视为普通文件那样来读。如果动作 ACTION 是 skip ,将不处理而直接跳过设备。

-d ACTION, --directories=ACTION

        如果输入文件是一个目录,使用动作 ACTION 来处理它。默认情况下,动作

ACTION是ead ,意味着目录将视为普通文件来读。如果动作ACTION 是 skip ,将不处理而直接跳过目录。如果动作 ACTION 是 recurse , grep 将递归地读每一目录下的所有文件。这样做和 -r 选项等价。


1.例如,打印匹配行之后的3行

# grep -A3 ‘root‘ /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

2、匹配单词‘ROOT‘,忽略大小写并显示行号

# grep -ni ‘ROOT‘ /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

3、查找符合‘bash‘的行,匹配两行符合‘bash‘的行即退出

# grep -c ‘bash‘ /etc/passwd

3

# grep -m 2 ‘bash‘ /etc/passwd

root:x:0:0:root:/root:/bin/bash

postgres:x:116:127:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash


4、查找当前目录及其子目录文件中含有指定内容的文件并显示文件名

  

grep  -rH  ‘pattern‘  *


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。