当我使用 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