AWK关联数组,映射或哈希图

x

假设我有两个文件:

文件1-map.txt

1, 178246
2, 289789
3, 384275
4, 869282

文件2-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}附近似乎出了点问题

剥壳机

删除列2中两个文件中的前导空格。

帮自己一个忙,换个逗号代替FSTab字符很不错,因为大多数输入屏幕都使用Tab移至下一个字段,因此它不应包含在您的数据中。|字符是好的,因为它是视觉和不太可能在你的输入。

您可以构建一个“陷阱”来查找没有正确数量的字段的记录,如下所示:

awk -F"|" -v expectFldCnt=2 '{
   if (NF==expectFldCnt) { print ":everything OK" ; }
    else { print "ERR: " NF "!=" expectFldCnt  ":" $0 > "errorFile" }
    }' \
  map.txt relation.txt

高温超导

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章