我想使用 GNU 并行来解决以下问题:
我有几个文件,每个文件都有几行文本。我想了解如何在每个文件的每一行文本上以及每个文件并行运行脚本(code.sh)。我应该能够将每个输入文件的操作输出写入具有不同扩展名的输出文件。
这似乎是多个并行命令在所有文件上并行运行,然后对每个文件内的所有行并行运行的情况。
这是我使用的:
ls mydata_* |
parallel -j+0 'cat {} | parallel -I ./explore-bash.sh > {.}.out'
我不知道如何使用 GNU 并行来做到这一点。请帮忙。
最佳答案
你的解决方案看起来很合理。您只需删除 -I:
ls mydata_* | parallel -j+0 'cat {} | parallel ./explore-bash.sh > {.}.out'
根据您的设置,这可能会更快,因为它只会运行 n 个作业,而上面的解决方案将并行运行 n*n 个作业(n = 核心数):
ls mydata_* | parallel -j1 'cat {} | parallel ./explore-bash.sh > {.}.out'
关于gnu-parallel - 使用 GNU 并行在多个文件内的多行上并行执行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44301505/