2017-06-01 46 views
1

我想爲以下問題使用GNU並行:使用GNU並行在多個文件中的多行內執行bash腳本

我有幾個文件,每個文件都有幾行文本。我想了解如何在每個文件的每行文本和並行的每個文件上運行腳本(code.sh)。我應該能夠將每個輸入文件上的操作輸出寫出到具有不同擴展名的輸出文件中。

似乎這是多個並行命令在所有文件上並行運行,然後對每個文件內的所有行並行運行的情況。

這是我用的: ls mydata_ * |並行-j + 0'cat {} |並行 - 我./explore-bash.sh> {。}。out'

我不知道如何使用GNU並行執行此操作。請幫忙。

+0

你是否瀏覽過本教程? 'man parallel_tutorial'或https://www.gnu.org/software/parallel/parallel_tutorial.html –

+0

謝謝。它像一個魅力。很棒的圖書館 – RoyS

回答

1

您的解決方案看起來很合理。你只需要刪除-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'