我在
Bash中有一个while循环处理如下:
while IFS=$'\t' read -r -a line; do myprogram ${line[0]} ${line[1]} ${line[0]}_vs_${line[1]}.result; done < fileinput
它从具有此结构的文件中读取,以供参考:
foo bar baz foobar
等等(制表符分隔).
我想使用GNU并行来并行化这个循环(因为条目很多并且处理速度很慢),但是我不知道如何将每行分配给数组,就像我在这里做的那样.
什么是可能的解决方案(GNU并行工作的替代方案)?
从
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Use-a-table-as-input开始:
“””
table_file.tsv的内容:
foo<TAB>bar baz <TAB> quux
跑步:
cmd -o bar -i foo cmd -o quux -i baz
你可以运行:
parallel -a table_file.tsv --colsep '\t' cmd -o {2} -i {1}
“””
所以在你的情况下它将是:
cat fileinput | parallel --colsep '\t' myprogram {1} {2} {1}_vs_{2}.result