• 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。

  • 相关阅读:
    Service解析
    Android消息处理
    FragmentTransaction.addToBackStack无效的问题
    Activity生命周期
    width 的100% 与 auto
    parseInt 与 parseFloat 解析
    splice
    <c:forEach>
    笔记,遮罩。。
    nginx 的windows 基本配置
  • 原文地址:https://www.cnblogs.com/Eivll0m/p/6650984.html
Copyright © 2020-2023  润新知