Text-Processing

通過另一個文本文件中的值更新一個文件的特定值

  • November 20, 2019

我有一個 ascii 格式的文本文件,想用保存在另一個文本文件中的值替換特定值。

考慮一個名稱為text_1. . . . 50.asc5 列 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

具有靈活的 GNU**awk**功能:

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 列$5

引用自:https://unix.stackexchange.com/questions/553133