免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何用最简单的方法,完成这个求平均值 [复制链接]

论坛徽章:
0
发表于 2013-08-20 07:58 |显示全部楼层
  1. cat file | grep abcd | awk '{sum+=$2}END{print sum/NR}'
复制代码
上面的代码是求grep abcd的第二列的平均值。那么如果file中没有abcd,则平均值返回0,还如何操作啊?

论坛徽章:
30
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3719周年集字徽章-19
日期:2019-08-27 13:31:2619周年集字徽章-CU
日期:2019-09-08 23:26:25
发表于 2013-08-20 08:10 |显示全部楼层
  1. awk '/abcd/{s+=$2}END{print s/NR}' file
复制代码

论坛徽章:
0
发表于 2013-08-20 09:14 |显示全部楼层
本帖最后由 秋天的絮儿 于 2013-08-20 09:16 编辑
  1. ssh@cctv[47]:% cat 99
  2. a       1
  3. b       2
  4. c       2
  5. d       4
  6. a       3
  7. ssh@cctv[48]:% awk '/a/{s+=$2}END{print s/NR}' 99
  8. 0.8
复制代码
回复 2# Shell_HAT


其实按照题意我需要得到的答案是  2

NR读这组数据时是读到最后,5 ,将4/5=0.8.

而我需要得到的是4/2=2.是不是应该用 NF

   

论坛徽章:
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
发表于 2013-08-20 09:22 |显示全部楼层
回复 3# 秋天的絮儿
  1. ssh@cctv[47]:% cat 99
  2. a       1
  3. b       2
  4. c       2
  5. d       4
  6. a       3
  7. ssh@cctv[48]:% awk '/a/{s+=$2;n++}END{print s/n}' 99
  8. 2
复制代码

论坛徽章:
0
发表于 2013-08-20 09:45 |显示全部楼层
本帖最后由 秋天的絮儿 于 2013-08-20 09:46 编辑

回复 4# 关阴月飞


    ssh@cctv[47]:% cat 99
a       1
b       2
c       2
d       4
a       3
ssh@cctv[48]:% awk '/a/{s+=$2;n++}END{print s/n}' 99
2

如果 我需要
  1. awk '/e/{s+=$2;n++}END{print s/n}' 99
复制代码
输出结果为0.   

论坛徽章:
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
发表于 2013-08-20 09:56 |显示全部楼层
回复 5# 秋天的絮儿
  1. awk '/e/{s+=$2;n++}END{if(n)print s/n;else print 0}' file
复制代码

论坛徽章:
0
发表于 2013-08-20 10:06 |显示全部楼层
回复 6# 关阴月飞

  1. ssh@cctv[125]:% cat 99
  2. 288XH-2 98.24  rvc019_19.00X14.00
  3. 297XH-2 98.43  rvc019_19.33X14.33
  4. 297XH-1 97.43  rvc019_19.33X14.33
  5. 01H-2 99.06  rvc019_19.00X14.00
  6. 39H 97.31  rvc019_19.00X14.00
  7. 88XH-1 98.62 rvc019_19.00X14.00
  8. 7H-2 99.05  rvc019_19.00X14.00
  9. 97XH-1 44.22 rvc019_19.00X14.00
  10. 78H-1 98.92  rvc019_19.00X14.00
  11. 6H-S2 99.30 rvc019_19.00X14.00
  12. ssh@cctv[126]:% cat 99 | awk '/rvc019_19.00X14.00/{s+=$2}END{print s/NF}'
  13. 244.907
复制代码
为什么会出现这个结果啊,按道理应该求的平均值啊。

论坛徽章:
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
发表于 2013-08-20 10:15 |显示全部楼层
本帖最后由 关阴月飞 于 2013-08-20 10:16 编辑

回复 7# 秋天的絮儿

LZ你赢了,我已经不知道你想干什么了:
  1. awk '/过滤关键字/{s+=$2;n++}END{if(n)print s/n;else print 0}' file
复制代码

论坛徽章:
0
发表于 2013-08-20 10:35 |显示全部楼层
回复 8# 关阴月飞


    呵呵,不是,不是,你的回答我已经看到了,已经达到目的了。我是说我试7l楼的那个为什么会是那样的结果。

论坛徽章:
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
发表于 2013-08-20 10:45 |显示全部楼层
本帖最后由 关阴月飞 于 2013-08-20 10:46 编辑

回复 9# 秋天的絮儿


NF 记录的是每一行有多少列

cat 99 | awk '/rvc019_19.00X14.00/{s+=$2}END{print s/NF}'

你这里的NF 是指文件最后一行的列数, 用s/NF得出来的值,和平均值一毛钱关系都没有。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP