2014-11-24 76 views
1

我想使用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* 

回答

0

我假設你不想讓你的蘋果與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} 

如果這也不是你如何得到你的輸入,那麼你需要更多地解釋你是如何擁有你的蘋果和蘋果的。

+0

正確,我不想'B's與蘋果。 「A」不能從其他論點計算;我現在正在做的是手動構建列表作爲文件,就像你在最後一個例子中做的那樣。 – ash 2014-11-24 19:14:39