![用另一个文本文件中的值更新一个文件的特定值](https://linux22.com/image/164298/%E7%94%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%80%BC%E6%9B%B4%E6%96%B0%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%E7%89%B9%E5%AE%9A%E5%80%BC.png)
我有一个 ascii 格式的文本文件,想要用另一个文本文件中保存的值替换特定值。
text_1. . . . 50.asc
考虑一个名为5 列、4 行的文件
文件中的样本数据
0.40007 0.544 0.6795 0.1545 -3.4028
0.61488 0.8471 0.7444 0.3537 0.0709
0.65128 0.6651 0.7948 0.9200 0.893
0.70952 0.5990 0.5061 0.610 0.893
我想将每个文件的(第 5 列,第 1 行)替换为Replacing_values.txt
.
它有数据
1
2
3
4
.
.
.
50
预期结果(继续所有文件)
0.40007 0.544 0.6795 0.1545 1
0.61488 0.8471 0.7444 0.3537 0.0709
0.65128 0.6651 0.7948 0.9200 0.893
0.70952 0.5990 0.5061 0.610 0.893
我试过这个
for i in `seq 50`; do x=`awk 'FNR==(1) {print $5}' *.asc`; y=`cat Replacing_values.txt`; echo $x==$y ;done
答案1
具有灵活的 GNUawk
特征:
gawk -i inplace -v repl="Replacing_values.txt" 'FNR==1{ getline $5 < repl }1' *.asc
-i inplace
- 允许就地修改输入文件-v repl="Replacing_values.txt"
- 用替换值保存文件名的变量FNR==1
- 仅考虑每个输入文件的第一行getline $5 < repl
- 从repl
文件中读取下一条记录并将其分配给第五列$5