GREP:如何搜索值,但同时排除一些匹配

Bri*_*ian 3 regex grep sed

我需要一种简化此命令的方法:

grep 'SEARCHTERM' server.log | grep -v 'PHHIABFFH' | grep -v 'Stats'
Run Code Online (Sandbox Code Playgroud)

SEARCHTERM 如果其中SEARCHTERM一行包含PHHIABFFH或,它应该找到包括但排除的所有行Stats.

小智 6

为什么要"简化"这个管道?Un*x命令行工具以这样的方式链接.

编辑

一些答案建议使用特定版本的grep的功能.我喜欢这个,但很可能在OP使用的grep版本中不存在这样的特定功能.

因此,只要我们不知道OP具有什么环境以及他可以使用哪种版本的工具,我建议坚持使用所有版本工具中的常用功能.

这再次很好地说明了Un*x的理念.

很容易低估组合管道和重定向的能力.作为一个启发例如,UNIX壳牌作为4GL [谢弗-狼]显示用这些设施为框架,简单实用程序少数可被组合,以支持创建和操作表示为简单的文本表的关系型数据库.

http://www.catb.org/~esr/writings/taoup/html/ch07s02.html#plumbing


cat*_*alk 5

这将有效:

grep 'SEARCHTERM' server.log | grep -Ev 'PHHIABFFH|Stats'
Run Code Online (Sandbox Code Playgroud)