これはよく知られたタスクであり、簡単に説明できます。
テキストファイルfoo.txtと除外文字列のブラックリストファイルを1行に1つずつ指定すると、除外文字列を含まないfoo.txtの行のみを含むfoo_filtered.txtが生成されます。
一般的なアプリケーションは、ビルドログからコンパイラの警告をフィルタリングすることですが、自分のものではないファイルの警告を無視します。ファイルfoo.txtは、警告ファイル(ビルドログからフィルタリングされたもの)であり、ファイル名が1行に1つずつ記載されたブラックリストファイルexclude_filenames.txtです。
私はそれがPerlやAWKのような手続き型言語でどのように行われるかを知っており、cut、comm、sortなどのLinuxコマンドの組み合わせでもそれを行ってきました。
しかし、私はxargsに本当に近づくべきだと感じており、最後のステップを見ることができません。
expected_filenames.txtにファイル名が1つしかない場合は、
grep -v foo.txt `cat excluded_filenames.txt`
それをします。
そして、私はファイル名を1行に1つずつ取得できることを知っています
xargs -L1 -a excluded_filenames.txt
では、手続き型言語で明示的なループを使用せずに、これら2つを1つのソリューションに組み合わせるにはどうすればよいでしょうか。
シンプルでエレガントなソリューションを探しています。