GNU并行多组命令
问题描述:
我想使用GNU并行使用两个不同的参数和两个不同的球体运行相同的命令。例如,我想下面的作业运行:GNU并行多组命令
mycmd A apples1
mycmd A apples2
mycmd A apples3
mycmd B bananas1
mycmd B bananas2
我可以用两个单独的呼叫做到这一点,但是这违背了我的工作由一个呼叫管理,以parallel
的目的。有没有办法?
parallel mycmd A ::: apples*
parallel mycmd B ::: bananas*
答
我假设你不想让你的苹果与Bs。否则,它是那样简单:
parallel mycmd ::: [A-Z] ::: [a-z]*
如果A可以计算为第二arg的第一个字符,你可以从20140722版本做到这一点:
parallel mycmd '{= $_=uc(substr($_,0,1)) =}' {} ::: [a-z]*
如果你有苹果的列表和相应的像这样:
A,apples1
A,apples2
B,bananas1
B,bananas2
B,bananas3
那么可以拆分上:
cat file | parallel --colsep , mycmd {1} {2}
如果这也不是你如何得到你的输入,那么你需要更多地解释你是如何拥有你的苹果和苹果的。
正确,我不想'B's与苹果。 “A”不能从其他论点计算;我现在正在做的是手动构建列表作为文件,就像你在最后一个例子中做的那样。 – ash 2014-11-24 19:14:39