一致する行のない入力パターンを印刷するには?

一致する行のない入力パターンを印刷するには?

パターンが一致するファイルを見つけるには、このgrepコマンドがあります。

grep -oiE 'pattern1|pattern2|pattern3|pattern4' *pattern_in_a_filename* | sort -u

出力:

file_one:pattern1
file_two:pattern2
file_two:pattern3

私が望むのは、pattern4次の例のように見つからないステートメントを出力することです。

file_one:pattern1
file_two:pattern2
file_two:pattern3
pattern4 not found

私は何千ものパターンを作っていますが、これは私たちの仕事に必要な重要なデータなので、すぐに完了する必要があります。

ベストアンサー1

これをしなければならないクイックできるだけ

仕事を早く終わらせたいですか?

発見する並列処理次のGNUを適用してくださいparallel解決策:

正しい方法は、すべてのパターンをファイル(たとえばpatterns.txt

主な仕事:

cat patterns.txt | parallel -j 0 --no-notice 'grep -Hoi {} /path/to/files/* || echo "{} not found"' | sort -u
  • -j N- ポジション数。Nジョブを並列に実行します。0できるだけ意味を与えます。デフォルトは100%で、これはCPUコアごとに1つのタスクを意味します。

上記のコマンドはすべての項目を検索します。模様patterns.txtすべてのファイルから並列。

テストしてみると2CPUコアには、いくつかのパターンのリストと、それぞれ641Mbのいくつかのcsvファイルが含まれています。私は薬を持っています。470%連続処理と比較して時間速度が向上する。
コンピュータにCPUコアが多いほど、より高速なパフォーマンスが得られます。

結論を出す...

https://www.gnu.org/software/parallel/man.html

おすすめ記事