xargsを使用してファイル内のコマンドを並列に実行する単一のライナー

xargsを使用してファイル内のコマンドを並列に実行する単一のライナー

次のスクリプトがあります。

#!/bin/csh

command 1 \
   -f \"input1\" \
   -l input2 -other_swithes1

command 2 \
   -f \"input1\" \
   -m input2 \
   -l input3 -other_swithes1

command 3 \
   -f \"input1\" \
   -l input2 -other_swithes2

xargsその場合は、これらのコマンドを並列に実行する方法を学びます。様々なバリエーションを試してみましたが、すべて失敗しました。私は実際にスクリプトを書きたくありません。 -d スイッチと -c を使用することは可能だと思いますが、わかりません。

問題をさらに簡素化し拡張するために私が持っているもの

cat file | grep -v "#.*" | sed -z 's/[\]\n/ /g' | xargs -I {} -n1 -P10 sh -c '{}'

ジョブの完了中に特別な問題が発生して\"削除されています。それでは、この問題を解決する手がかりはありませんか?

答え1

GNU Parallelでは、次のことができます。

parallel -d '\n\n' < file.csh

公開:私はこのツールの作成者です。

答え2

答えは次のとおりです。

cat file | grep -v "#.*" | sed -z 's/[\]\n/ /g' | sed -z 's/\"/\\\\"/g' | xargs -I {} -n1 -P10 sh -c '{}'

ありがとう

関連情報