並列プロセスを実行し、両方のプロセスが完了した後に出力をマージする方法

並列プロセスを実行し、両方のプロセスが完了した後に出力をマージする方法

私は約5〜6つの異なるプログラムを介していくつかのデータをパイプし、最終結果をタブ区切りのファイルに保存するbashシェルスクリプトを持っています。

その後、別の同様のデータセットで同じ操作を再度実行し、それを2番目のファイルに出力します。

両方のファイルは比較分析のために別のプログラムに入力されます。たとえば、単純化

Data1 | this | that |theother | grep |sed | awk |whatever > Data1Res.csv
Data2 | this | that |theother | grep |sed | awk |whatever > Data2Res.csv
AnalysisProg -i Data1res.csv Data2res.csv

私の質問は次のとおりです。ステップ1と2を同時に実行するには(例:&を使用)、両方のステップが完了した場合にのみステップ3(AnalyticProg)を開始するにはどうすればよいですか?

ありがとう

ps AnalysisProgはストリームまたはfifoでは機能しません。

ベストアンサー1

使用wait。たとえば、

Data1 ... > Data1Res.csv &
Data2 ... > Data2Res.csv &
wait
AnalysisProg

する:

  • Data1およびData2パイプラインをバックグラウンドジョブとして実行する
  • 両方が終わるまで待ってください。
  • AnalysisProgを実行します。

たとえば、次を参照してください。この問題

おすすめ記事