假设我有两个文件:
文件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中两个文件中的前导空格。
帮自己一个忙,换个逗号代替FS
。Tab字符很不错,因为大多数输入屏幕都使用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] 删除。
我来说两句