我有两个文件 - 每个文件中有两列和多行..我需要更新第二个文件中的信息并在第一个文件中覆盖它。
例如:
File1:File2
A 1 B 7
B 2 C 8
C 3 D 9
D 4 E 10
E 5 H 1
F 6 I 7
G 7
我需要从第二个文件中添加新值并更新现有值:
Final_file:
A 1
B 7
C 8
D 9
E 10
F 6
G 7
H 1
I 7
我希望我的问题很明确。重要的是,两个文件都没有相同的行数和行不匹配。
我尝试过这样的事情:
awk 'NR==FNR { a[$1]=$2; next} $1 in a {print $0, a[$1]}' File1 File2
但是输出只是匹配列:
B 2 7
C 3 8
D 4 9
E 5 10
任何人都可以帮助修复我的代码以保持所有信息更新!!
非常感谢你的帮助!
答案 0 :(得分:1)
awk '{a[$1]=$2}END{for(x in a)print x, a[x]}' f1 f2
您不需要检查$1 in a
。因为如果$1
中已有a
,您只想覆盖数据。
所以,只是覆盖它。