2017-05-31 1 views
-1

この問題は、いくつかのデータUsing awk how do I combine data in two files and substitute values from the second file to the first file?awkの使用方法2つのファイルにデータを結合し、2番目のファイルの複数の値を1番目のファイルに置き換えるにはどうすればよいですか?

data.txtをに拡張含んでいる: ";値1;値; VALUE3、キーvalue4"

A;1 
B;2 
A;3 

keys.txtに含まれる( "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 

したがって、keys.txtのキーを含むdata.txtの各行は、対応する値をdata.txtの行に追加する必要があります。

+1

最後の行の論理は何ですか?それは位置に基づいていますか(両方のファイルの3行目)。最初のファイルに "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 
関連する問題