awkで共通キーを使用して2つのファイルをマージする方法は?

awkで共通キーを使用して2つのファイルをマージする方法は?

k1とk2という2つのファイルがあり、共通キー「ブックタイトル」に基づいてこれら2つのファイルをマージしようとしています。

k1

John | Dreaming of Day | IEEEJournal
Akon | Dreaming of Night | ACMJournal

k2

Dreaming of Day | Fiction
Dreaming of Night | Non-Fiction

kout:本のタイトルに合わせてマージする必要があります。つまりDreaming of DayDreaming of Night

John | Fiction | IEEEJournal
Akon | Non-Fiction | ACMJournal

私は次のawkスクリプトを書いた:

 awk -F"|" 'BEGIN{OFS="|"}FNR==NR{a[$1$2]=$3;next}($1$2 in a && $3=$3"|"a[$1$2])' k1 k2

しかし、これはうまくいかないようです。

ベストアンサー1

これはgawk次のように動作するようですmawk

awk -F' *[|] *' -vOFS=' | ' '
  NR==FNR {a[$1]=$2;next} $2 in a {print $1, a[$2], $3}
' k2 k1
John | Fiction | IEEEJournal
Akon | Non-Fiction | ACMJournal

おすすめ記事