0

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

例如:

文件 1:文件 2

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

我需要从第二个文件中添加新值并更新现有值:

最终文件:

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

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

非常感谢您的帮助!

4

1 回答 1

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

你不需要检查 if $1 in a。因为你只想简单地覆盖数据,如果$1已经在a.

所以,只需覆盖它。

于 2014-01-22T12:49:25.260 回答