linux awk删除文本重复行需要注意强制类型转换的问题

番茄系统家园 · 2022-05-26 00:30:23

希望删除IP地址前三段相同的多余重复行。测试文本如下:

# cat 1.txt
2.1.10.1
2.1.10.2
2.11.0.1
2.11.0.2

如果数组下标不加引号,在这个特殊的情况下会被强制转换为数字,最终导致统计失败:

# awk 'BEGIN{FS=OFS="."}{if(!a[$1.$2.$3]++)print}' 1.txt
2.1.10.1

# awk -F '.' '{a[$1.$2.$3]++;}END{for(i in a)print i""a[i]}' 1.txt
21104

数组下标加上引号之后,一切恢复正常:

# awk 'BEGIN{FS=OFS="."}{if(!a[$1"."$2"."$3]++)print}' 1.txt
2.1.10.1
2.11.0.1

# awk -F '.' '{a[$1"."$2"."$3]++;}END{for(i in a)print i""a[i]}' 1.txt
2.11.02
2.1.102


扩展阅读:

免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/xtwt/202109asZfEF.html
猜你喜欢
最新应用
热门应用