Linuxでgrepとの負の一致を使用する方法(一致しない印刷行)
grep
は、パターンまたは正規表現に一致するファイルの行を出力するLinux用のコマンドライン検索ユーティリティです。一致を反転して、特定の文字列を含むファイル内のすべての行を除外することも役立ちます。
grepとの負の一致
で負の一致を使用するには、 またはフラグを指定grep
してコマンドを発行する必要があります。これにより、指定されたパターンに一致しない行のみが印刷されます。-v
--invert-match
grep -v "bar"file
ただし、一致するものがないため、技術的に一致するものgrep
がないため、フラグを使用-o
して「一致のみ」を出力する方法がないことに注意してください。grep
文字列内で複数回一致する可能性がありますが、この場合、複数の一致があるかどうかは関係ありません。単一の一致があるとgrep
、行がスキップされます。
これは正規表現(正規表現)でも機能し、正規表現に一致する任意の文字列を出力します。
grep -v "foo ba[rz]"file
負の一致を行う正規表現を記述できますが、通常、この方法で一致を逆にする方が簡単です。
または、を使用するawk
場合は、感嘆修飾子を使用して正規表現を反転できます。
awk '!/bar/' file
負の一致するファイル名
小文字のフラグ-l
を使用するgrep
と、実際に一致したコンテンツの代わりに、一致を含むファイル名が出力されます。これは、ファイルのリストをスキャンするときに役立ちますが、逆にすることも役立つ場合があります。
Reverse-l
は、逆のことを行う大文字の変形-L
です。
grep -L "bar". /*.txt
-v
一致のないファイルを印刷する前に、cフラグを使用し-L
て一致を逆にしないでください。そうしないと、一致が2回反転され、目的の効果が得られない「二重反対」の状況に遭遇します。
コメントを残す