
ファイルのリストを繰り返して正規表現の一致を検索するbashスクリプトがあります。以下は現在のコードの一部です。
for file in $Files_To_Parse; do (cat $file) | grep -ioE "($Keys$Delimiters$Payload+$End_String)" | grep -v 'null' | grep -v '*' done
$ Files_To_Parseは、スペースで区切られたファイル名文字列です。
$Keys、$Delimiters、$Payload$、および End_String は正規表現パターンです。
コードは現在(ゆっくり)動作します。
複数のファイルを並列に処理したり、1つのファイルから正規表現一致を並列に検索したいのですが、GNUのParallelパッケージを使用してこれを行う方法がわかりません。
関心をお寄せいただきありがとうございます。
答え1
ディスク I/O により、以下が制限されることがあります。
doit() {
(cat "$1") | grep -ioE "($Keys$Delimiters$Payload+$End_String)" | grep -v 'null' | grep -v '*'
}
export -f doit
parallel doit ::: $Files_To_Parse
このチュートリアルを段階的に進めてください。あなたのコマンドラインがあなたを愛するでしょう:
man parallel_tutorial