2014-01-22 61 views
0

我有兩個文件 - 在每個文件是兩列和許多行..我需要更新信息從第二個文件並覆蓋它在第一個文件。更新信息到我的專欄在awk

例如:

文件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 

,我需要從第二個文件添加新的值和更新現有的值:

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
awk '{a[$1]=$2}END{for(x in a)print x, a[x]}' f1 f2 

你不需要檢查是否$1 in a。因爲如果$1已經在a中,您只是簡單地覆蓋數據。

所以,只是覆蓋它。

+0

非常感謝。我可以繼續排序嗎?有可能檢查,如果它工作正常?有成千上萬的行..我想指望我做了多少次更新以及添加了多少新值。我很感激所有的幫助! – Geroge

+0

也許如果我可以分開更新一個新的:-)這將是非常有益的...再次感謝你們所有人.. – Geroge

+0

@ user2881857 pipe to'sort'? – Kent