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

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。

 

相关文章:

  • 2021-08-25
  • 2021-12-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-09
相关资源
相似解决方案