2つのファイル間のvlookupでawk [閉じる]

2つのファイル間のvlookupでawk [閉じる]

次の2つのファイルタブを分割しました。

ファイル1:

KEY1    TEXT1
KEY2    TEXT2
KEY3    TEXT3

ファイル2:

KEY1    111
KEY2    222
KEY3    333

「aaa」、「bbb」が静的テキストである次の目標を達成したいと思います。

aaa TEXT1   bbb 111 ccc KEY1    ddd
aaa TEXT2   bbb 222 ccc KEY2    ddd
aaa TEXT3   bbb 333 ccc KEY3    ddd

次のコードを実行しています。

 awk -F'\t' -f vlookup.awk file1 file2

vlookup.awkは次のとおりです。

FNR==NR{
  a[$1]=$2
  next
}
{ if ($1 in a) { print "aaa", a[$1], "bbb", $2} else {print $1, "ERROR"}}

これは最初の部分では機能しますが、追加するとすぐに"ccc", $1, "ddd"結果がめちゃくちゃになります。たとえば、次のようになります。

aaa cccXT1  KEY111ddd1

ありがとう dk

ベストアンサー1

$ cat vlookup.awk 
BEGIN { OFS="\t" }
FNR==NR{
  a[$1]=$2
  next
}
#{ if ($1 in a) { print "aaa", a[$1], "bbb", $2} else {print $1, "ERROR"}}
{ if ($1 in a)  { print "aaa", a[$1], "bbb", $2, "ccc", $1, "ddd" } else {print $1, "ERROR"}}
$ awk -F'\t' -f vlookup.awk file1 file2
aaa     TEXT1   bbb     111     ccc     KEY1    ddd
aaa     TEXT2   bbb     222     ccc     KEY2    ddd
aaa     TEXT3   bbb     333     ccc     KEY3    ddd

おすすめ記事