• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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

    上一篇:linux下4种kill某个用户所有进程的方法
    下一篇:linux sed命令互换包含指定关键字的行
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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