免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3210 | 回复: 8
打印 上一主题 下一主题

[文本处理] sort 如何只取最大列的第一行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-05-15 09:27 |只看该作者 |倒序浏览
有如下列子cat test:
    Hold                           1397452   43952 (3%)       450 (0%)         1353050 (96%)
    Hold                           1397452   44039 (3%)       363 (0%)         1353050 (96%)
    Hold                           1397452   44042 (3%)       360 (0%)         1353050 (96%)
    Hold                           1397452   44131 (3%)       271 (0%)         1353050 (96%)
    Hold                           1397452   44262 (3%)       140 (0%)         1353050 (96%)
    Setup                          1397449   41515 (2%)       2884 (0%)        1353050 (96%)
    Setup                          1397449   44222 (3%)       177 (0%)         1353050 (96%)
    Setup                          1397449   44399 (3%)       0 (0%)           1353050 (96%)
    Setup                          1397449   44399 (3%)       0 (0%)           1353050 (96%)


有没有经过一个排序以后只取第一列相同的第四列最大的那一行。

结果cat result:
    Hold                           1397452   43952 (3%)       450 (0%)         1353050 (96%)
    Setup                          1397449   41515 (2%)       2884 (0%)        1353050 (96%)

不考虑其他列的值大小。


谢谢。

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
2 [报告]
发表于 2017-05-15 09:34 |只看该作者
  1. awk 'NR==FNR{a[$1]=a[$1]>$5?a[$1]:$5;next}a[$1]==$5' a a
  2.     Hold                           1397452   43952 (3%)       450 (0%)         1353050 (96%)
  3.     Setup                          1397449   41515 (2%)       2884 (0%)        1353050 (96%)
复制代码

论坛徽章:
0
3 [报告]
发表于 2017-05-15 09:38 |只看该作者

多谢楼上兄弟指教。想在多问一句,除了AWK意外,有没有sort 一个option可以搞定这件事情的啊?
我man了一下 sort 没找到这样类似的option。。


再次感谢楼上答疑

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2017-05-15 13:49 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2017-05-15 17:59 |只看该作者
回复 4# jason680

不明白你说的意思, 你链接的那个是我问的另外一个问题,两个问题我觉得完全是两种需求的。
一个是累计相加,现在的问题是找出最大的一行。
不一样的问题点啊。


至于问题没有描述清楚是什么情况?
请大侠 指教的详细一点。

谢谢

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
6 [报告]
发表于 2017-05-15 19:24 |只看该作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my @aData = do{local $_ = <DATA>; [split]};
  5. while(<DATA>){
  6.         my @aT = split;
  7.         if($aData[-1][0] ne $aT[0]){
  8.                 push(@aData, [@aT]);
  9.                 next;
  10.         }
  11.         $aData[-1] = [@aT] if($aData[-1][4] < $aT[4]);
  12. }

  13. print "@{$_}\n" for @aData;

  14. __DATA__
  15. Hold                           1397452   43952 (3%)       450 (0%)         1353050 (96%)
  16. Hold                           1397452   44039 (3%)       363 (0%)         1353050 (96%)
  17. Hold                           1397452   44042 (3%)       360 (0%)         1353050 (96%)
  18. Hold                           1397452   44131 (3%)       271 (0%)         1353050 (96%)
  19. Hold                           1397452   44262 (3%)       140 (0%)         1353050 (96%)
  20. Setup                          1397449   41515 (2%)       2884 (0%)        1353050 (96%)
  21. Setup                          1397449   44222 (3%)       177 (0%)         1353050 (96%)
  22. Setup                          1397449   44399 (3%)       0 (0%)           1353050 (96%)
  23. Setup                          1397449   44399 (3%)       0 (0%)           1353050 (96%)
复制代码

论坛徽章:
0
7 [报告]
发表于 2017-05-17 12:04 |只看该作者
sort应该有根据某一列排序

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
8 [报告]
发表于 2017-05-17 12:38 |只看该作者
回复 3# clfsy


sort可以排序,但是不能

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
9 [报告]
发表于 2017-05-25 09:34 |只看该作者
排序不是计算,在sort看来
999是大于8888888的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP