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

但是我的輸出每次都被覆蓋。我知道他們應該是這種我不知道的簡單答案。shell循環寫入同一個文件

+3

'>' - operator - overwrite。 '>>' - 運算符 - 追加 – 2012-04-02 16:50:32

回答

1

使用>>到Concat的內容到一個文件中。每次寫入文件時,>都會覆蓋該文件。

+0

在每次寫入時使用'>>'會將多次運行的輸出放在同一個文件中,*和*是不必要的低效率,因爲每次運行'perl'命令時都會重新打開輸出文件,而不是離開輸出文件在整個循環過程中打開。 – 2017-11-13 15:57:03

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 2017-01-18 10:27:05

+0

單向重定向方法更好(避免重複打開文件)。當做一些像'perl'這樣重的事情時,並不是什麼大不了的事情,但是很多時候人們用這種看起來像'echo'的方式開始運行......「>> log';在這種情況下,設置重定向所需的時間實際上相對於「echo」作爲一個整體所需的時間是相當大的。 – 2017-11-13 16:25:47