2012-04-02 18 views
0
for num in {1..5} 
do 
perl simulate.pl file.txt file2.txt > output.txt 
done 

しかし、私の出力は毎回上書きされます。私は彼らが私にはわからないこれに対する簡単な答えの一種でなければならないことを知っている。シェルループで同じファイルに書き込む

+3

'>' - 演算子 - 上書きします。 '' '' - operator - append –

答えて

1

ファイルに内容をCONCATする>>を使用してください。 >は、ファイルに書き込むたびにファイルを上書きします。

+0

各書き込みで '>>'を使うと、 'perl'コマンドが実行されるたびに出力ファイルを再オープンするので、複数の実行を同じファイルにまとめます。*と*は不必要に非効率です。ループの全期間にわたって出力ファイルを開きます。 –

7

各繰り返しで追加するか、最後に上書きします。

> output.txt 
for num in {1..5} 
do 
    perl simulate.pl file.txt file2.txt >> output.txt 
done 

for num in {1..5} 
do 
    perl simulate.pl file.txt file2.txt 
done > output.txt 
+0

それは私のために働いた – Anvesh

+0

ワンビッグリダイレクションのアプローチは、より良いものです(ファイルを繰り返し再オープンするのを避ける)。 'perl'と同じくらい重いものをやっているときには大きな問題ではありませんが、' echo 'のような方法でこれを使っている人は多いです。そのシナリオでは、リダイレクションを設定するのに必要な時間は、実際には、「エコー」全体に必要な時間に比べて実質的に大きくなります。 –

関連する問題