2015-11-06 31 views
0

我正在运行一个调用输出单个值的程序的大循环。我想将该输出重定向到由空格附加的文本文件,而不是换行。有没有办法做到这一点?bash将命令输出重定向到带有空格分隔符的文件

for i in {1..1000000000}; do 
    mincstats file${i}.mnc -mean -quiet >> output.txt 
done 

我曾尝试将输出分配给如下的变量,但我认为这可能会占用不必要的处理时间。什么是最有效的方式来做到这一点?

for i in {1..1000000000}; do 
    var=$(mincstats file${i}.mnc -mean -quiet) 
    echo -n $var >> output.txt 
done 
+0

'echo'是一个内置的;它不会超过mincstats已经需要的时间。 – chepner

回答

2

您可以将所有的换行转换为空间。

在整个循环而不是每个命令上执行重定向也更有效。

for i in {1..1000000000}; do 
    mincstats file${i}.mnc -mean -quiet 
done | tr '\n' ' ' >> output.txt 
+0

是的,认为这是最好的方法。 – 123

+0

谢谢!这两个建议都有效,但这似乎运行得更快一点。 – Jon

1

试试这个:

for ((i=1;i<=1000000000;i++)); do 
    echo -n "$(mincstats file${i}.mnc -mean -quiet) " 
done > output.txt 
+0

你会在空格后回显一个换行符。 – Barmar

+0

谢谢。我已经更新了我的答案。 – Cyrus

相关问题