当前位置: 移动技术网 > 科技>操作系统>Linux > linux awk删除文本重复行需要注意强制类型转换的问题

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

2018年04月01日  | 移动技术网科技  | 我要评论

希望删除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

扩展阅读:

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网