我正在尝试使用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
答案 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 解决这个问题。
我希望它会帮助其他人来到这里。