Gawk相互参照

Gawk相互参照

gawkを使用してデータを相互参照するときに問題があります。

gawk -F: 'FNR==NR{a[$1]=$2;next} $2 in a{print $1 FS a[$2]}' email.phone.txt name.email.txt > name.phone.txt

電子メール。電話コンテンツの例:

[email protected]:012345
[email protected]:912345

name.email.txt 例:

Charles:[email protected]
Erica:[email protected]

期待される出力

Charles:012345
Charles:912345
Erica:012345
Erica:912345

ただし、その電子メールと最後に一致した電話だけが出力されるため、次のように出力されます。

Charles:912345
Erica:912345

そして、その電子メールに使用した最初の電話をオフにします。

ベストアンサー1

GNU awk(gawk) - しかしいいえ一般 awk - サポート本物多次元配列の場合は、次のものを使用できます。

gawk -F: '
    FNR==NR{a[$1][$2]=1;next}
    $2 in a{for(i in a[$2]) print $1 FS i}
' email.phone.txt name.email.txt

おすすめ記事