awk之数组排序(省略 | sort)

本文介绍如何使用AWK实现文本中字母出现频率的统计,并通过内部排序功能按频率降序输出。文章详细解释了如何避免使用外部sort命令,提供了一个完全自包含的AWK脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[转]awk之数组排序(省略 | sort)

(2011-11-29 14:22:59)
标签:

it

分类:每天一滴
catfile 
a
b
a
c
e
e
a
b
e

要求统计文中字母出现的次数,并按次数降序输出:
  1. awk '{a[$1]++}END{for(in a)print i,a[i]}' file | sort-k2nr
  2. a 3
  3. e 3
  4. b 2
  5. c 1




文本的关键是如何省略掉管道:
  1. awk '{
  2.     a[$1]++
  3. }END{
  4.     l=asort(a,b);
  5.     for(n=l;n>0;n--){
  6.         for(in a){
  7.             if(a[i]==b[n]){
  8.                 printi,a[i];
  9.                 deletea[i];
  10.                 break;
  11.             }
  12.         }
  13.     }
  14. }' file
[解析]
首先统计字母出现的次数,最后在 END 中利用asort 对数组a的值进行排序,并把排序结果保存到数组b中。然后开始降序输出用 b[n] 的值判断是否与 a[i]的值相等,相等就打印出下标和其对应的值,然后从数组a中删除该下标,以免以后的循环再匹配到该下表的值。要是从小到大输出只须更改for循环即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值