【发布时间】:2014-01-14 03:16:58
【问题描述】:
假设我有两个文件:
file1 - map.txt
1, 178246
2, 289789
3, 384275
4, 869282
file2-relation.txt
178246, 289789
384275, 178246
384275, 869282
预期结果是:
1, 2
3, 1
3, 4
但我使用以下代码得到的结果是:
awk 'FNR==NR{map[$2]=$1} {$1=map[$1];$2=map[$2];print $0}' map.txt relation.txt
2,
1,
4,
当我像这样交换 map.txt 中的列时感到很困惑:
178246, 1
289789, 2
384275, 3
869282, 4
relation.txt 没有改变
结果变成了:
awk 'FNR==NR{map[$1]=$2} {$1=map[$1];$2=map[$2];print $0}' map.txt relation.txt
1,
3,
3,
{$1=map[$1];$2=map[$2];print $0} 附近似乎有问题
【问题讨论】:
-
如果我使用一些真实姓名,如 tony、jerry、frank 而不是 uid 178246、289789 等,我的代码运行良好,我不知道为什么当我使用数字而不是字符串作为关联数组的索引
-
太棒了!它的工作原理。我用“|”而不是“,”,它工作得很好。非常感谢 Shellter。
-
我怎样才能给你一个答案分数?大声笑,一个很好的答案
标签: awk mapping associative-array