なぜこの行は何もしないのですか? 「sed」コマンドを並行して実行しようとしていますが、「standard.txt」には何も出力されません
$ Filetemp =ストリーム編集中のファイル
standard.txt =出力先のファイル
cat $Filetemp | parallel --pipe sed -e "s/[[:space:]]\+/ /g" > standard.txt
これはうまく動作するが、時間がかかりすぎる元のコードです。
sed -e "s/[[:space:]]\+/ /g" $Filetmp > standard.txt
GNUパラレルバージョン:20130922
Lubuntu 14.04
ランダムファイルで実行すると、構文の問題が発生しました。コマンドを引用する必要があります:
cat $Filetemp | parallel --pipe 'sed -e "s/[[:space:]]\+/ /g"' > standard.txt
それでもうまくいかない場合は、echo $Filetemp
をテストする(または手動でファイルを選択する)か、リダイレクトを削除して、出力が発生するのを確認します(何らかの奇妙な上書きの問題がある場合)。
バージョン20140422以降、GNU Parallelには--pipepart
があり、非常に効率的です。
parallel -a $Filetemp --pipepart 'sed -e "s/[[:space:]]\+/ /g"' > standard.txt
また、バージョン20161222から--block -1
を使用して、$Filetemp
をジョブスロットごとに1つのブロックに分割できます。
parallel -a $Filetemp --block -1 --pipepart 'sed -e "s/[[:space:]]\+/ /g"' > standard.txt
これにより、各コアで1 GB /秒以上を提供できるため、I/Oによって制限される可能性があります。これを確認するには、次のケースをご覧ください。
iostats -dkx 1
使用率が100%の場合、ディスクがボトルネックです。