2017-05-31 91 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 
相关问题