[英]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.out
, file2.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.