我有两个包含大量浮点数的文件。我想用文件2中的浮点数替换文件1中的一个浮点数,使用行和字符来查找数字(而不是它们的值)。
关于这个主题的很多主题,但我找不到任何使用第二个文件复制值的内容。
以下是我的两个文件的示例:
File1中:
14 4
2.64895E-01 4.75834E+02 2.85629E+05 -9.65829E+01
2.76893E-01 8.53749E+02 4.56385E+05 -7.65658E+01
6.25576E-01 5.27841E+02 5.72960E+05 -7.46175E+01
8.56285E-01 4.67285E+02 5.75962E+05 -5.17586E+01
文件2:
Some text on the first line
1
Some text on the third line
0
AND01 0.53758275 0.65728944
AND02 0.64889566 0.53386002
AND03 0.65729386 0.64628194
AND04 0.26586960 0.46582925
AND05 0.46480534 0.57415869
在这个特定的例子中,我想用File2(0.65728944)的第5行写的第二个浮点数替换File1的第二行的第一个数字(2.64895E-01)。
注意:数字的值会根据我考虑的文件而改变,所以我必须根据文件中的位置来识别数字。
我对使用bash脚本非常陌生,只使用" sed"命令到现在为止修改我的文件。
欢迎任何帮助:) 非常感谢您的投入!
答案 0 :(得分:0)
在bash
中做到这一点并不难,但如果这不是一个严格的要求,那么使用像{{{{}这样的实际文本处理工具可以实现更简单,更简洁的解决方案。 1}}:
awk
说明:首先阅读awk 'NR==5 {val=$2} NR>FNR {FNR==2 && $1=val; print}' file2 file1
,然后将第5条记录的第二个字段存储在变量file2
中(第一部分:val
)。然后,阅读NR==5 {val=$2}
,打印每一行,但替换第二条记录的第一个字段(file1
是当前文件记录号,FNR
是所有文件中的记录总数,所以far)值存储在NR
。
通常,val
程序由awk
个序列组成。 pattern { actions }
是一系列pattern
将被执行的条件。 actions
.. $1
是具有字段值的变量,每个行(记录)被拆分为字段分隔符($NF
变量或FS
选项)上的字段,默认为空格。
结果(输出):
-F'..'