用另一个文本文件中的值更新一个文件的特定值

用另一个文本文件中的值更新一个文件的特定值

我有一个 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

相关内容