簡體   English   中英

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

[英]GREP: How to search for a value but at the same time exclude some matches

我需要一種簡化此命令的方法:

grep 'SEARCHTERM' server.log | grep -v 'PHHIABFFH' | grep -v 'Stats'

它應該找到包括SEARCHTERM在內的所有行,但如果其中一個SEARCHTERM行包含PHHIABFFHStats排除。

為什么要“簡化”這個管道? Un * x命令行工具以這樣的方式鏈接。

編輯

一些答案建議使用特定版本的grep的功能。 我喜歡這個,但很可能在OP使用的grep版本中不存在這樣的特定功能。

因此,只要我們不知道OP有什么環境以及他可以使用哪個版本的工具,我建議堅持使用所有版本工具中的常用功能。

這再次很好地說明了Un * x的理念。

很容易低估組合管道和重定向的能力。 作為一個有益的例子,Unix Shell作為一個4GL [Schaffer-Wolf]表明,通過這些工具作為框架,可以組合一些簡單的實用程序來支持創建和操作表示為簡單文本表的關系數據庫。

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

這將有效:

grep 'SEARCHTERM' server.log | grep -Ev 'PHHIABFFH|Stats'

如果簡單只意味着一個命令有更多的args ...

awk '$0 !~ /PHHIABFFH|Stats/ && /SEARCHTERM/' server.log

你可以使用shell

while read -r line
do
   case "$line" in
    *"Stats"*|*"PHHIABFFH"*) continue;;
    *"SEARCHTERM"* ) echo "$line";;
   esac
done < "file"

我會這樣做的:

grep 'SEARCHTERM' server.log | grep -v -e 'PHHIABFFH' -e 'Stats'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM