次のコマンドを実行する最善の方法があるかどうか疑問に思いました
cat cisco.log-20151103.log | grep -v "90.192.142.138" | grep -v "PIX" | grep -v "Intrusion"
試しました
cat cisco.log-20151103.log | grep -v "90.192.142.138|PIX|Intrusion"
動作しません。
回答
他の2つのオプション
grep -v -e 90.192.142.138 -e PIX -e Intrusion cisco.log-20151103.log
固定文字列を想定
grep -vF "90.192.142.138 PIX Intrusion " cisco.log-20151103.log
回答
grepは必ずしもパイプからの入力を必要としないため、次のことができます
grep -vE "90\.192\.142\.138|PIX|Intrusion" cisco.log-20151103.log
大文字のEは正規表現モードに切り替わり、この場合はドットをエスケープする必要があります。
コメント
には正規表現があり、ドットは意味があります。ドットはクエストでエスケープされている必要があります。 nですが、'とにかく番号のシーケンスが他のものと一致する可能性はほとんどありません。 grep -f
は正規表現をオフにします。
190.192.142.138
と一致します。したがって、理想的には、IPアドレス部分を可能な限り固定するか、ログのIPアドレスの前にある区切り文字をコンマ"、"明確にするために:grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log
回答
grep -vE "90.192.142.138|PIX|Intrusion" cisco.log-20151103.log
コメント
-
.
以降これも一致する任意の文字に一致します。90C192X142R138
そしてそれはOPが求めたものではありません。特殊な(正規表現)文字はエスケープする必要があります。
回答
$ grep -v -f exclude.list $ cat exclude.list 90.192.142.138 PIX Intrusion
コメント
- これは問題なく機能します。'誰かが反対票を投じた理由がわかりません。
-E
が拡張正規表現モードをオンにする必要があります。これにより、パターンの|
を変更できます。<-Eを指定しないdivid = "3c51ea2e0c">