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

时间:2021-05-24

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

# cat 1.txt2.1.10.12.1.10.22.11.0.12.11.0.2

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

# awk 'BEGIN{FS=OFS="."}{if(!a[$1.$2.$3]++)print}' 1.txt2.1.10.1# awk -F '.' '{a[$1.$2.$3]++;}END{for(i in a)print i" "a[i]}' 1.txt2110 4

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

# awk 'BEGIN{FS=OFS="."}{if(!a[$1"."$2"."$3]++)print}' 1.txt2.1.10.12.11.0.1# awk -F '.' '{a[$1"."$2"."$3]++;}END{for(i in a)print i" "a[i]}' 1.txt2.11.0 22.1.10 2

扩展阅读:

http://www.gnu.org/software/gawk/manual/html_node/Variable-Typing.html

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章