2017-05-31 92 views
-1

這個問題的一個擴展Using awk how do I combine data in two files and substitute values from the second file to the first file?使用awk如何合併兩個文件中的數據並將第二個文件中的多個值替換爲第一個文件?

data.txt中包含一些數據:

A;1 
B;2 
A;3 

keys.txt含 「鍵; VALUE1;值;值3; VALUE4」( 「C」 是在本例中不data.txt中的一部分,但awk腳本應該仍然工作):

A;30;BC;100;1000 
B;20;CD;200;2000 
C;10;DE;300;3000 

通緝輸出:

A;1;30;BC;100;1000 
B;2;20;CD;200;2000 
A;3;30;BC;100;1000 

因此,data.txt中包含keys.txt中的任何鍵的每一行都應該獲得附加到data.txt中的行的相應值。

+1

最後一行的邏輯是什麼?它是基於位置(在兩個文件中都是第三行)。由於第一個文件中沒有「C」,它不能通過鍵。 – karakfa

+0

@karakfa,你絕對正確,我的錯誤..糾正了這個問題。 – Markus

回答

1

它與問題中提到的上一個答案類似。

$ awk 'BEGIN {FS=OFS=";"} 
     NR==FNR {k=$1; $1=""; a[k]=$0; next} 
     $1 in a {print $0 a[$1]}' file2 file1 

A;1;30;BC;100;1000 
B;2;20;CD;200;2000 
A;3;30;BC;100;1000 
相關問題