如果两个ID
列匹配,我正在寻找替换文件中的列的方法。
我有档案A.txt
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美元。我怎样才能将$4
与A.txt
的{{1}}与$1
的{{1}}进行比较
我尝试了以下
B.txt
但它没有用。有办法解决吗?谢谢
答案 0 :(得分:0)
awk 解决方案:
awk 'NR==FNR{ if(NR>1) a[$1]=$2; next }
FNR==1{ print $NF,$2,$3; next } # output the header line rearranged
FNR>1 && ($NF in a){ $1=$NF; if(NF<4) { f=$2; $2=a[$1]; $3=f } else $NF=""
}1' B.txt A.txt | column -t
输出:
ID a b
1 0.01 5
2 0.1 6
3 30 2