-1

2 つのテキスト ファイルがあります。1 つは Fortran プログラムの入力ファイルで、もう 1 つは実数が 2 列 (多くの行) にあるファイルです。最初のファイルの 3 行目を 2 番目のファイルの各行に何度も置き換えることができれば、タスクを自動化できます。ファイル 1 の NR=3 をファイル 2 の NR=1 に置き換えたい、入力を実行します。再び、ファイル 1 の NR=3 をファイル 2 の NR=2 に置き換え、入力を実行します。Windowsでバッチファイルとgawk、grep、sedを使用したい。(gawk、grep、sed、およびその他の unix/linux コマンドは、unxutil を介して Windows で使用できます)。出来ますか?何か助けはありますか?例: 最初のファイル

1  0  0  0  0  0  0  3  0  0  0  0  0  0  0  0 
1  0  0  0  0  0  0  3  0  0  0  0  0  0  0  0 
17.01425  0.00000 
0.0 0.0 1.000 1.000  2700.0      
 0.0 0.0 0.0 0.0 0.0                        
 100.0  290.0                               
1    360.0                                  
 310.0 800.0  2700.0 2700.0                   
  2   10  360.0                   

2番目のファイル

17.01425 0.00000
17.37597 10.00000
17.73771 20.00000
18.09943 30.00000
................ 

(17.01425 0.00000)最初の3行目を2番目のファイルの各行に置き換えたい(17.73771 20.00000など)。

4

2 に答える 2

2

予想される出力のない部分的な推測作業ですが、これはあなたが望むものかもしれません:

awk '
NR==FNR { file1[NR]=$0; next }
{
    for (i=1; i<=(NR-FNR); i++)
        print (i==3 ? $0 : file1[i]) > ("outfile" FNR)
}
' file1 file2
于 2013-07-16T14:27:17.430 に答える
1

1 つの提案を次に示します。

while read line
do
  sed -i "3c${line}" file1.txt
  # do whatever you need to with the modified file
done < file2.txt

元の を保持する必要がある場合は、行を次のようfile1.txtに変更します。sed

sed "3c${line}" < file1.txt > tempfile.txt

代わりに、一時ファイルに対して後続のコマンドを実行します...

于 2013-07-16T15:02:05.977 に答える