Linux中的Grep呼吁(在文件中查找文本)(2)

10445:ndmp            10000/tcp              # Network Data Management Protocol
10446:ndmp            10000/udp              # Network Data Management Protocol

Linux中的Grep呼吁(在文件中查找文本)

Count函数匹配

若要将匹配行数打印到尺度输出,请利用-c(或 --count)选项。

在下面的示例中,我们将计较以/usr/bin/zsh作为shell的帐户数量。

$regular expression$grep -c '/usr/bin/zsh' /etc/passwd

输出

4

宁静模式

-q(或--quiet)汇报grep在宁静模式下运行,不要在尺度输出上显示任何内容。 假如找到匹配项,则该呼吁以状态0退出。这在要查抄文件是否包括字符串并按照功效执行某些操纵的shell剧本中利用grep时很是有用。

这是一个在宁静模式下利用grep作为if语句中的测试呼吁的示例:

if grep -q PATTERN filename
then
    echo pattern found
else
    echo pattern not found
fi

Basic正则表达式

GNU Grep具有三个正则表达式成果集,Basic、 Extended 和 perl 兼容

默认环境下,grep将模式表明为根基的正则表达式,个中除元字符之外的所有字符实际上都是与本身匹配的正则表达式。

以下是最常用的元字符的列表:

利用^(插入标记)标记可在行首匹配表达式。 在下面的示例中,仅当字符串kangaroo呈此刻行的开头时才匹配。

$grep "^kangaroo" file.txt

利用$(美元)标记来匹配行尾的表达式。 在下面的示例中,仅当字符串kangaroo呈此刻行的最后时才匹配。

$grep "kangaroo$" file.txt

利用.(点)标记以匹配任何单个字符。 譬喻,要匹配以kan开头,然后有两个字符并以字符串roo末了的任何内容,可以利用以下模式:

$grep "kan..roo" file.txt

利用[](括号)来匹配括号中包括的任何单个字符。 譬喻,找到包括accept或“ accent”的行,可以利用以下模式:

$grep "acce[np]t" file.txt


利用[^]来匹配不在括号内的任何单个字符。下面的模式将匹配任何包括co(any_letter_except_l)a的字符串组合,如coca、cobalt等,但不匹配包括cola的行,

$grep "co[^l]a" file.txt

要转义下一个字符的非凡寄义,请利用\(反斜杠)标记。

Extended正则表达式

要将模式表明为扩展的正则表达式,请利用-E(或--extended-regexp)选项。 扩展的正则表达式包罗所有根基元字符,以及用于建设更巨大和更强大的搜索模式的其他元字符。 以下是一些示例:

匹配并提取给定文件中的所有电子邮件地点:

$grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt

匹配并提取给定文件中的所有有效IP地点:

$grep -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' file.txt

-o选项仅用于打印匹配的字符串。

搜索多个字符串(模式)

可以利用OR运算符|将两个或多个搜索模式团结在一起。

默认环境下,grep将模式表明为根基正则表达式,个中的元字符(譬喻|) 失去其非凡寄义,必需利用反斜杠版本。

在以下示例中,我们正在Nginx日志错误文件中搜索所有呈现的致命,错误和严重的单词:

$grep 'fatal\|error\|critical' /var/log/nginx/error.log

假如利用扩展正则表达式选项-E,则不该转义运算符|,如下所示:

$grep -E 'fatal|error|critical' /var/log/nginx/error.log

在匹配之前打印行

要在匹配行之前打印特定命量的行,请利用-B(或 --before-context)选项。

譬喻,要在匹配行之前显示5行前奏上下文,可以利用以下呼吁:

$grep -B 5 root /etc/passwd

Linux中的Grep呼吁(在文件中查找文本)

匹配后打印行

若要在匹配行之后打印特定命量的行,请利用-A(或 --after-context)选项。

譬喻,要在匹配行之后显示尾随上下文的五行,可以利用以下呼吁:

$grep -A 5 root /etc/passwd

Linux中的Grep呼吁(在文件中查找文本)

总结

grep呼吁答允您在文件内部搜索模式。 假如找到匹配项,则grep打印包括指定模式的行。

在Grep用户手册页上,尚有更多有关Grep的常识。

假如您有任何问题或反馈,请随时颁发评论。

Linux公社的RSS地点https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdjgx.html