-1

我有两个文本文件。一个是 fortran 程序的输入文件,另一个是两列(多行)中的实数。如果我可以多次用第二个文件的每一行替换第一个文件的第三行,那么我可以自动化我的任务。我想用文件二的 NR=1 替换文件一中的 NR=3,运行输入。再次将文件一中的 NR=3 替换为文件二的 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                   

第二个文件

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

我希望将第一行的第三(17.01425 0.00000)行替换为第二个文件的每一行(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

这里有一个建议:

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 回答