免费注册 查看新帖 |

Chinaunix

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

[文本处理] 找出数个列中最大值的id号 [复制链接]

论坛徽章:
7
2015年迎新春徽章
日期:2015-03-04 10:01:442015年亚洲杯之科威特
日期:2015-04-17 17:27:042015亚冠之阿尔萨德
日期:2015-07-22 15:25:4015-16赛季CBA联赛之吉林
日期:2016-04-11 13:57:30操作系统版块每日发帖之星
日期:2016-06-24 06:20:00每日论坛发贴之星
日期:2016-06-24 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-05-09 12:31:45
发表于 2014-09-15 18:47 |显示全部楼层
由此贴http://bbs.chinaunix.net/thread-4153060-1-1.html引申下:比如有一个文件,内容如下:
a 33 45 554 887
b 34 33 434 323
c 32 98 34 43
如何用awk求出最大值对应的id($1).

$awk '{for(i=2;i<=NF;i++)if(d<$i)d=$i;u=$1;print d,u}' file |awk 'd<$1{d=$1;u=$2}END{print u}'

有无好方法?

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2014-09-15 19:02 |显示全部楼层
回复 1# 251744647


    echo 'a 33 45 554 887
b 34 33 434 323
c 32 98 34 43' |awk '{for(i=2;i<=NF;i++)if(a<$i){a=$i;max=$1}}END{print max}'
a

论坛徽章:
7
亥猪
日期:2013-10-10 17:00:29辰龙
日期:2013-10-12 16:23:19卯兔
日期:2013-11-18 17:01:27金牛座
日期:2014-09-09 10:17:052015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之柏太阳神
日期:2015-09-25 13:56:42数据库技术版块每日发帖之星
日期:2016-08-06 06:20:00
发表于 2014-09-15 19:04 |显示全部楼层
本帖最后由 li0924 于 2014-09-16 09:56 编辑

try
  1. awk '{for(i=2;i<=NF;i++)a[$1]=a[$1]>$i?a[$1]:$i}END{l=asort(a,b);for(i in a){if(a[i]==b[l])print i}}'  file
复制代码
sorry,我太依赖数组了。

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
发表于 2014-09-15 21:30 |显示全部楼层
学生党:飘过~简洁版
[oracle@orcl ~]$ awk '{for(i=2;i<=NF;i++)a=a<$i?$i:a}END{print a}' yhsafe.txt
887

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
发表于 2014-09-16 00:51 |显示全部楼层
本帖最后由 reb00t 于 2014-09-16 00:54 编辑

简洁版v2
  1. echo "a 33 45 554 887
  2. b 34 33 434 323
  3. c 32 98 34 43"|awk '{for(i=1;i++<=NF;)max=max<$i?$i:max}END{print max}'
  4. 887
复制代码

论坛徽章:
7
2015年迎新春徽章
日期:2015-03-04 10:01:442015年亚洲杯之科威特
日期:2015-04-17 17:27:042015亚冠之阿尔萨德
日期:2015-07-22 15:25:4015-16赛季CBA联赛之吉林
日期:2016-04-11 13:57:30操作系统版块每日发帖之星
日期:2016-06-24 06:20:00每日论坛发贴之星
日期:2016-06-24 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-05-09 12:31:45
发表于 2014-09-16 09:05 |显示全部楼层
需要此值对应的id号,比如887对应的id号为a.
回复 4# 李满满


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-09-16 09:11 |显示全部楼层
回复 5# reb00t

充气被发神带入坑了
   

论坛徽章:
7
2015年迎新春徽章
日期:2015-03-04 10:01:442015年亚洲杯之科威特
日期:2015-04-17 17:27:042015亚冠之阿尔萨德
日期:2015-07-22 15:25:4015-16赛季CBA联赛之吉林
日期:2016-04-11 13:57:30操作系统版块每日发帖之星
日期:2016-06-24 06:20:00每日论坛发贴之星
日期:2016-06-24 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-05-09 12:31:45
发表于 2014-09-16 09:20 |显示全部楼层
昨天试了的格式是:awk '{for(i=2;i<=NF;i++)if(a<$i)a=$i;max=$1}END{print max}'结果不对.在if后加大括号,OK. 谢谢各位.
回复 2# yinyuemi


   

论坛徽章:
22
申猴
日期: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:46
发表于 2014-09-16 10:10 |显示全部楼层
本帖最后由 chengchow 于 2014-09-16 10:11 编辑
  1. awk '{for(i=2;i<=NF;i++){if($i>a){a=$i;b=$1}}}END{print b,a}' file
  2. a 887
复制代码

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2014-09-16 10:13 |显示全部楼层
  1. [root@localhost ~]# awk '{for(i=2;i<=NF;i++)a[$1]=a[$1]>$i?a[$1]:$i}END{for(i in a)print i,a[i]}' file1 | sort | head -1
  2. a 887
  3. [root@localhost ~]# cat file1
  4. a 33 45 554 887
  5. b 34 33 434 323
  6. c 32 98 34 43
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

PostgreSQL中国大会,早鸟票抢购!

PostgreSQL中国大会,早鸟票抢购!
2019年11月29~11月30日,由 PostgreSQL中文社区与ITPUB联合主办的第九届《PostgreSQL 中国技术大会》将在北京隆重召开。PostgreSQL 作为功能最强的的开源关系型数据库之一,得到了越来越多企业的推广和运用,也越来越受到广大技术爱好者的欢迎和重视。这将是 PostgreSQL 的又一次交流盛会。




----------------------------------------

点击报名>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP