在awk中更新我的列的信息

时间:2014-01-22 12:44:19

标签: awk updating textmatching

我有两个文件 - 每个文件中有两列和多行..我需要更新第二个文件中的信息并在第一个文件中覆盖它。

例如:

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

任何人都可以帮助修复我的代码以保持所有信息更新!!

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

awk '{a[$1]=$2}END{for(x in a)print x, a[x]}' f1 f2

您不需要检查$1 in a。因为如果$1中已有a,您只想覆盖数据。

所以,只是覆盖它。