2012-04-02 87 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