加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

并行化一个while循环,数组从bash中的文件读取

发布时间:2020-12-15 18:23:46 所属栏目:安全 来源:网络整理
导读:我在 Bash中有一个while循环处理如下: while IFS=$'t' read -r -a line;do myprogram ${line[0]} ${line[1]} ${line[0]}_vs_${line[1]}.result;done fileinput 它从具有此结构的文件中读取,以供参考: foo barbaz foobar 等等(制表符分隔). 我想使用GNU并
我在 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读