【问题标题】:gnu parallel: output each job to a different filegnu 并行:将每个作业输出到不同的文件
【发布时间】:2014-04-06 22:12:41
【问题描述】:

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

如果我尝试:

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

【问题讨论】:

    标签: bash gnu-parallel


    【解决方案1】:

    原来我需要引用重定向,因为它是在 parallel 之外处理的:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        我希望它能帮助到这里的其他人。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-27
          • 1970-01-01
          相关资源
          最近更新 更多