シェルスクリプトでバッファにデータを追加するには?

シェルスクリプトでバッファにデータを追加するには?

シェルスクリプトを使って次のことをしたいと思います。 (単純化のためにINPUTに同じデータを使用しています。実際の生活では、ループラベルjjに応じてデータが変更されます。)

#!/bin/sh
for jj in `seq 100`; do
    cat INPUT.file >> OUTPUT.file
done

しかし、これはファイルを開閉する操作がループで行われるため、非常に非効率的です。 INPUT.fileが大きいと、このコードが非常に遅くなる可能性があります。それで、Cで事前に割り当てられた変数を作成するのと同じように、バッファを持つか生成する方法があるかどうか疑問に思います。

ベストアンサー1

ありがとうスティーブン・チャジェラス回答「echoとcatの実行時になぜこんなに大きな違いがあるのですか?」、正解はムル一度だけ呼び出すとcat改善することができます(ただし、データが大きくループの繰り返しが多い場合は、この「わずかな」量が増える可能性があります。私のシステムでは、このスクリプトはループスクリプトにかかる時間の約75%を占めます)。

#!/bin/sh
yes INPUT.file | head -100 | xargs cat >> OUTPUT.file

おすすめ記事