2017-07-26 3 views
0

私は2つのファイルを入力する必要があり、実行するたびに10分かかるプログラムがあります。このプログラムを500回実行する必要がありますが、実行する前に2つの入力ファイルのそれぞれの単語の一部を変更する必要があります。ファイル内の文字列を置き換えてプログラムを複数回実行するLinuxのbash scritp

たとえば、a_1、a_2、...、a_499、a_500、input1.dat、およびinput2.datというファイルがあるディレクトリがあります。

1)文字列 "a_1"(私のディレクトリにある私の最初のファイルの名前)は、文字列 "a_2"(2番目の文字列)に置き換えられます。 input1.datとinput2.datの両方の入力ファイル)。実行が終了すると、文字列「A_2」はそれだけで、それは内部input2.dat呼び出すためですinput1.dat表示されますなぜmyprogram -i input1.dat (理由)

3):

2)は私のプログラムは以下のように実行されます両方の入力ファイルで "a_3"に置き換えられました。

4)私のプログラムではなくて、)「a_500」に置き換えられて、私は「a_499」まで(ディレクトリ内のすべての私のファイルに対してこの操作を行う必要があり、再び

を実行すると、プログラムは最後の時間のために実行されます両方の入力ファイルの名前を変更する

私は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

関連する問題