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

[转]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循环即可。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值