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