我有两个文本文件。一个是fortran程序的输入文件,另一个是两列中的实数(多行)。如果我可以多次将第一个文件的第三行替换为第二个文件的每一行,那么我可以自动完成任务。我想用文件2中的NR = 1替换文件1中的NR = 3,运行输入。再次用文件2中的NR = 2替换文件1中的NR = 3,运行输入。依此类推。 我想在Windows上使用批处理文件和gawk,grep,sed。 (通过unxutil在Windows上提供gawk,grep,sed和其他unix / linux命令)。可能吗?有帮助吗?例: 第一个文件
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)
的第3行被第二个文件(17.73771 20.00000
等的每一行替换。)
答案 0 :(得分: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
答案 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
然后针对临时文件运行后续命令......