2017-07-26 39 views
0

我有一個程序,需要兩個文件作爲輸入,每次執行它需要10分鐘。我需要執行這個程序500次,但在每次執行之前,我需要在兩個輸入文件的每一箇中更改一個單詞的一部分。Linux bash scritp替換文件內的字符串並執行程序multple times

例如,我有一個包含以下文件的目錄:a_1,a_2,...,a_499,a_500,input1.dat和input2.dat。我在bash中需要一個腳本,以便在執行此腳本時:

1)字符串「a_1」(它是我的第一個文件在我的目錄中的名稱)被字符串「a_2」(第二個在兩個輸入文件中:input1.dat和input2.dat。執行

2)我的程序爲:myprogram -i input1.dat (爲什麼只出現input1.dat的原因是因爲它調用input2.dat內)

3)當執行結束,字符串「A_2」是在兩個輸入文件中都由「a_3」取代。

4)我再次執行程序

我需要爲我的目錄中的所有文件,這樣做(直到「a_499」是由「a_500」更換程序最後一次執行),無改變兩個輸入文件的名稱

我是bash的新手,所以這是我無法實現的,但是如果有人能幫助我,這會爲我節省很多時間。

+0

您可能需要從這裏開始。 https://stackoverflow.com/questions/4140822/creating-multiple-files-with-content-from-shell – hlovyak

+0

你應該看看像sed和awk這樣的程序......有了這些並不難...... – AdityaG

回答

0

我認爲你會想用a_1跑第一時間,即使這從你的描述中不清楚。下面的腳本應該做的伎倆,應該很容易理解。

cp input1.dat orig1.dat 
cp input2.dat orig2.dat 
for f in a_* ; do 
    sed "s/a_1/$f/g" orig1.dat > input1.dat 
    sed "s/a_1/$f/g" orig2.dat > input2.dat 
    myprogram -i input1.dat 
done 
+0

這就是完善!非常感謝你 :) – Argumanez