评论

收藏

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

服务系统 服务系统 发布于:2022-04-02 11:18 | 阅读数:537 | 评论:0

这篇文章主要介绍了linux awk删除文本重复行需要注意强制类型转换的问题 ,需要的朋友可以参考下
希望删除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
2110  4
数组下标加上引号之后,一切恢复正常:
# 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.0  2
2.1.10  2
扩展阅读:
http://www.gnu.org/software/gawk/manual/html_node/Variable-Typing.html

关注下面的标签,发现更多相似文章