• awk4.0对数组value排序


    有朋友问了一个问题,要求对下面这段文本进行处理:

    http://www.baidu.com/2.html
    http://www.baidu.com/2.html
    http://www.baidu.com/2.html
    http://www.baidu.com/2.html
    http://www.baidu.com/2.html
    http://www.163.com/index.html
    http://www.163.com/1.html
    http://www.163.com/index.html
    http://www.sina.com.cn/index.html
    http://www.sina.com.cn/3.html
    http://www.sina.com.cn/2.html
    http://www.sina.com.cn/2.html

    输出结果:

    www.163.com 3
    www.sina.com.cn 4
    www.baidu.com 5

    要求对输出的第2列进行升序排序。awk4.0以下版本直接用内置的排序函数asort、asorti貌似没有办法做出来。简单的办法就是交给shell来排序:

    awk -F/+ '{a[$2]++}END{for(i in a)print i,a[i]|"sort -k2n"}' file
    www.163.com 3
    www.sina.com.cn 4
    www.baidu.com 5
    

    如果一定要用纯awk来做,方法如下,awk版本需要4.0+。

    awk -F/+ 'BEGIN{PROCINFO["sorted_in"]="@val_num_asc"}{a[$2]++}END{for(i in a){print i,a[i]}}' file
    www.163.com 3
    www.sina.com.cn 4
    www.baidu.com 5

    降序:

    awk -F/+ 'BEGIN{PROCINFO["sorted_in"]="@val_num_desc"}{a[$2]++}END{for(i in a){print i,a[i]}}' file
    www.baidu.com 5
    www.sina.com.cn 4
    www.163.com 3

    PROCINFO["sorted_in"]还有@unsorted、@ind_str_asc、@ind_num_asc、@val_type_asc、@val_str_asc、@ind_str_desc。。。。等特殊值可用,具体用法可以参考https://www.gnu.org/software/gawk/manual/html_node/Controlling-Scanning.html。

  • 相关阅读:
    Linux中搭建Maven私服
    NIO类库
    JAVA网络通信IO-NIO-AIO-Netty
    栈和队列
    JAVA四类八种基本数据类型
    JAVA基础—线程池
    vue 数组push元素 视图没更新
    小程序♥云开发
    vue2.0 transition 手风琴
    element-ui 表格翻页多选后仍然记忆所选项,数据回显
  • 原文地址:https://www.cnblogs.com/Eivll0m/p/6650984.html
Copyright © 2020-2023  润新知