假设我有2个文件
File-1 map.txt
1 tony
2 sean
3 jerry
4 ada
File-2 relation.txt
tony sean
jerry ada
ada sean
预期输出结果.txt
1 2
3 4
4 2
我的代码是:
awk 'FNR==NR{map[$1]=$2;next;} {$1=map[$1]; $2=map[$2]; print $0}' map.txt relation.txt > output.txt
但我只得到了左栏:
1
3
4
$2=map[$2]
附近似乎出现了问题。
非常感谢您的帮助。
答案 0 :(得分:3)
您的映射创建方式错误,需要:
map[$2] = $1
您当前的脚本将数字映射到名称,而您似乎想要的是从名称到数字的地图。
以下记录显示了更正后的脚本:
pax> cat m.txt
1 tony
2 sean
3 jerry
4 ada
pax> cat r.txt
tony sean
jerry ada
ada sean
pax> awk 'FNR==NR{map[$2]=$1;next;}{$1=map[$1];$2=map[$2];print $0}' m.txt r.txt
1 2
3 4
4 2
答案 1 :(得分:3)
使用awk。
awk 'FNR==NR{map[$2]=$1;next;}{print map[$1], map[$2]}' m.txt r.txt