web-dev-qa-db-ja.com

テキストファイルで発生するコマンド出力の行をフィルターで除外する方法

禁止された行のテキストファイルがあるとしますforbidden.txt。テキストファイルに存在するコマンド出力のすべての行をフィルタリングする簡単な方法は何ですか?

cat input.txt | exclude-forbidden-lines forbidden.txt | sort
16
danijar

次のようにgrepを使用します。

$ grep -v -x -F -f forbidden.txt input.txt

grepのオプションの長いリストは、

  • -v一致の意味を逆にします。つまり、物事を探しますnot一致。
  • -xパターンに一致する場合、パターンが行全体に一致することを要求します。つまり、行のどこにも一致しません。
  • -Fパターンに一致する場合、それを固定文字列として扱います。つまり、正規表現としては扱いません。
  • -f指定されたファイルからパターンを読み取ります(forbidden.txt)。

次に、それをsortまたはそれを使用して実行するものにパイプします。

28
Kusalananda