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

相关内容