免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4052 | 回复: 22

[文本处理] 选取文本最大的三个数字 [复制链接]

论坛徽章:
0
发表于 2014-06-11 12:49 |显示全部楼层
有一个文本file
a    12
a     11
a  13
a  14
b  9
b  7
b  3
b  8
c  7
c  6
c 4
c  9
怎么得到每个的前三个,想要的结果为
a 14  13  12
b  9  8     7
c   9   7     6

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
发表于 2014-06-11 12:55 |显示全部楼层
  1. [root@ awktest]# sort  -nr  1.txt |awk 'a[$1]++<3{b[$1]=b[$1] FS $2}END{for(i in b)print i,b[i]}'
  2. a  14 13 12
  3. b  9 8 7
  4. c  9 7 6
  5. [root@ awktest]# cat 1.txt
  6. a    12
  7. a     11
  8. a  13
  9. a  14
  10. b  9
  11. b  7
  12. b  3
  13. b  8
  14. c  7
  15. c  6
  16. c 4
  17. c  9
复制代码

论坛徽章:
0
发表于 2014-06-11 13:01 |显示全部楼层
回复 2# 关阴月飞
真厉害,如果是这样的文本,这样显示呢。谢谢
a    12    li
a     11   asd
a  13   as
a  14  df
b  9   df
b  7  eaef
b  3   adae
b  8  grh
c  7   rey
c  6   pokd
c 4    ucj
c  9   ije
怎么得到每个的前三个,想要的结果为
a df  as  li
b  df   grh   eaef
c   ije   rey     pokd


   

论坛徽章:
0
发表于 2014-06-11 13:13 |显示全部楼层
回复 2# 关阴月飞
咋样  能实现不,awk没那么熟,谢谢了


   

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
发表于 2014-06-11 13:18 |显示全部楼层

http://bbs.chinaunix.net/thread-4118053-1-1.html

直接说出原始需求岂不皆大欢喜?

根据 PF 大神的,稍微改动下就ok啦,依样画葫芦
  1. sort -k2,2nr file | awk 'a[$1]++<3{b[$1]=b[$1] FS $3}END{for(i in b)print i""b[i]}'
复制代码

论坛徽章:
3
酉鸡
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亚冠之德黑兰石油
日期:2015-08-03 11:14:27
发表于 2014-06-11 13:38 |显示全部楼层
X-Y problem~

论坛徽章:
0
发表于 2014-06-11 13:39 |显示全部楼层
回复 5# reyleon
是的,应该一次问完的。现在有个问题,你的这个命令不好使。谢谢
[#localhost]$ cat list
a    12    li
a     11   asd
a  13   as
a  14  df
b  9   df
b  7  eaef
b  3   adae
b  8  grh
c  7   rey
c  6   pokd
c 4    ucj
c  9   ije
[#localhost]$ sort -k2,2nr list | awk 'a[$1]++<3{b[$1]=b[$1] FS $3}END{for(i in b)print i""b}'           
lif
eaef
pokd


   

论坛徽章:
0
发表于 2014-06-11 13:52 |显示全部楼层
求大神一枚

论坛徽章:
768
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
发表于 2014-06-11 13:55 |显示全部楼层
回复 7# T_study
没发现有什么问题。
  1. [masonzhu@rat122 zzz]$ cat i
  2. a    12    li
  3. a     11   asd
  4. a  13   as
  5. a  14  df
  6. b  9   df
  7. b  7  eaef
  8. b  3   adae
  9. b  8  grh
  10. c  7   rey
  11. c  6   pokd
  12. c 4    ucj
  13. c  9   ije
  14. [masonzhu@rat122 zzz]$ sort -k2,2nr i | awk 'a[$1]++<3{b[$1]=b[$1] FS $3}END{for(i in b)print i""b[i]}'
  15. a df as li
  16. b df grh eaef
  17. c ije rey pokd
复制代码

论坛徽章:
0
发表于 2014-06-11 14:02 |显示全部楼层
回复 9# Herowinter
我的确实不可以,你的awk是哪个版本。我的是3.1.3


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP