8

我正在尝试awk使用parallel命令作为 shell 脚本来处理文本文件,但无法让它将每个作业输出到不同的文件

如果我尝试:

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

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

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

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

3 回答 3

13

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

seq 10 | parallel awk \''{...}'\' file{}.txt ">" file{}.out
于 2014-03-05T03:43:40.247 回答
3

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

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

虽然,有时将输出重定向到文件和标准输出是有用的。您可以使用tee. 在这种情况下,要使用的命令可以是:

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

于 2015-08-03T20:52:44.853 回答
-1

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

我希望它会帮助其他一些到达这里的人。

于 2016-05-31T02:36:39.333 回答