繁体   English   中英

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

[英]gnu parallel: output each job to a different file

我试图使用parallel命令作为shell脚本使用awk处理所有文本文件,但是无法将其输出到不同的文件

如果我尝试:

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

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

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

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

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

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

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

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

虽然,有时可以将输出重定向到文件,也可以重定向到stdout。 你可以使用tee实现这一目标。 在这种情况下,要使用的命令可以是:

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

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

我希望它能帮助其他一些人来到这里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM