回答:
パターンマッチ反転オプション-v
についてはgrep
、このために本当に便利です。
grep -v 'UFW BLOCK' /var/log/syslog
これにより、を含まないすべての行が表示されますUFW BLOCK
。grep
デフォルトで使用する基本的な正規表現、括弧を含めることは、それがスペースを含む「UFW BLOCK」の個々の文字のいずれかを探しになります。おそらく出力なしで終わるでしょう。文字列の周りに括弧があることを確認する必要がある場合は、それらをエスケープするか、固定文字列のみを含めるオプションを\[UFW BLOCK\]
使用し-F
ますgrep
(この点についてはZannaとSteeldriverに感謝します):
grep -Fv '[UFW BLOCK]' /var/log/syslog
次のように出力をページャーにパイプすることで、見やすくすることができますless
。
grep -v 'UFW BLOCK' /var/log/syslog | less
または、後で表示するために、出力をホームディレクトリ内のファイルにリダイレクトします。
grep -v 'UFW BLOCK' /var/log/syslog > ~/filtered_syslog
fgrep
相当するコマンドを使用することもできgrep -F
ます。
編集機能を備えた任意のツールを使用できます。grep
とを使用したソリューションは既に提供されていsed
ますが、他にもいくつかの選択肢があります。これらのすべては、容易にパイプすることができless
たりmore
、または何か他のもの。
Perl
perl -ne 'print unless /\[UFW BLOCK\]/' /var/log/syslog
perl -pe '$_="" if /\[UFW BLOCK\]/' /var/log/syslog
perl -ne '/\[UFW BLOCK\]/ || print' /var/log/syslog
perl -ne 'print if !/\[UFW BLOCK\]/' /var/log/syslog
perl -ne '!/\[UFW BLOCK\]/ && print' /var/log/syslog
perl -ne '/\[UFW BLOCK\]/ ? "" : print' /var/log/syslog
awk
awk '!/\[UFW BLOCK\]/' file
あなたも使用awk
できます:
awk '!/PATTERN/' log
複数の「パターン」があり、次のgrep
ような2つのパターンを使用したくない場合に使用します。
... | grep -v foo | grep -v bar
構文は次のとおりです。
awk '!/PATTERN/ && !/PATTERN2/' log
grep -Ev "foo|bar"
?
-e
複数のパターンを定義するためにも使用できます。grep -v -e 'foo' -e 'bar'
less
、正規表現パターンの後に表示された行をフィルタリングする可能性を提供することに興味があるかもしれません。この機能を使用&
するには、続けてパターンを入力し、入力する&
だけで元に戻すことができます。