gnu parallel:将每个作业输出到不同的文件

时间:2014-03-05 03:20:29

标签: bash gnu-parallel

我正在尝试使用awk命令处理parallel文本文件作为shell脚本,但无法将其输出到另一个文件

如果我尝试:

seq 10 | parallel awk \''{ if ( $5 > 0.4 ) print $2}'\' file{}.txt > file{}.out

它输出到文件file{}.out而不是file1.outfile2.out等。

教程和手册页还建议我可以使用--files,但它只会打印到stdout

seq 10 | parallel awk \''{ if ( $5 > 0.4 ) print $2}'\' file{}.txt --files file{}.out

3 个答案:

答案 0 :(得分:6)

事实证明我需要引用重定向,因为它是在parallel之外处理的:

seq 10 | parallel awk \''{...}'\' file{}.txt ">" file{}.out

答案 1 :(得分:1)

另一种方法是在双引号内引入整个并行命令:

seq 10 | parallel " awk command > file{}.out "

尽管有时将输出重定向到文件以及stdout也很有用。您可以使用tee实现此目的。在这种情况下,要使用的命令可以是:

seq 10 | parallel " awk command | tee file{}.out "

答案 2 :(得分:0)

由于我正在并行化一个具有无管道支持的脚本,因此这里的解决方案对我无效,所以我打开了一个新的线程here 解决这个问题。

我希望它会帮助其他人来到这里。