-2
如果兩列ID
列匹配,我正在尋找替換文件中列的方法。 我有文件A.txt
查找2列不同文件之間的匹配,並用awk替換第3列
c a b ID
0.1 0.01 5 1
0.2 0.1 6 2
0.3 2 3
和文件B.txt
ID a b
1 10 15
2 20 16
3 30 12
4 40 14
輸出即時尋找是 文件A.txt
ID a b
1 0.01 5
2 0.1 6
3 30 2
我發現有可能與以下
awk 'NR==FNR{ if(NR>1) a[$1]=$2; next }
FNR>1 && $1 in a && NF<3{ f=$2; $2=a[$1]; $3=f }1' B.txt A.txt | column -t
但問題是它比較兩個文件中的$ 1。我怎麼能不是從A.txt
與$1
從B.txt
比較$4
我嘗試以下
awk 'NR==FNR{ if(NR>1) a[$1]=$2; b[$1]=$1; next }
FNR>1 && $1~ /b[$1] in a && NF<3{ f=$2; $2=a[$1]; $3=f }1' eaf.txt final.txt | column -t
但它沒有工作。有沒有辦法解決它?謝謝
這是慣例downvoting時發表評論。 –
您需要指定'FS'(例如使用tab和'FS =「\ t」'),因爲當您使用默認的'FS'時,當'NR == 4'時'A.txt'沒有$ 2。 。除此之外,這應該足夠了:'awk'NR == FNR {a [$ 1]; next} {print $ 4,$ 2,$ 3}'B A'中的$ 4。 –
您需要告訴我們,「A.txt」是製表符分隔還是固定寬度的字段或別的東西,否則我們如何編寫一個工具來確定第4行的缺失值是第2行? –