免费注册 查看新帖 |

Chinaunix

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

awk 统计百分比问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-26 16:26 |只看该作者 |倒序浏览
有一文件 5.txt
21  cs
3   hs
55  hf
20  tl

现在想统计每行$1占总$1和的百分比,想得到以下结果
cs   21.21%
hs  3.03%  
hf   55.56%
tl    20.20%

我写了一个脚本
#! /bin/sh                                                     
cat 5.txt|while read sz dm                                    
do                                                            
awk '{sum+=$1}END{printf("%s %6.2f%%\n", $dm,sum/'$sz')}' 5.txt
done   
   
为什么结果是:            
20 tl   4.71%
20 tl  33.00%
20 tl   1.80%
20 tl   4.95%

请指点

[ 本帖最后由 sby0329 于 2009-3-26 16:52 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2009-03-26 16:32 |只看该作者

回复 #1 sby0329 的帖子

try:
  1. awk 'NR==FNR{s+=$1}NR>FNR{printf("%s %.2f%%\n",$2,$1/s*100)}' urfile urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2009-03-26 16:36 |只看该作者
[root@Mylinux tmp]# awk '{a[NR]=$2;b[NR]=$1;s+=$1}END{for (j=1;j<=NR;j++) printf "%s %.2f%\n",a[j],b[j]*100/s}' file  
cs 21.21%
hs 3.03%
hf 55.56%
tl 20.20%

论坛徽章:
0
4 [报告]
发表于 2009-03-26 16:49 |只看该作者
多谢楼上两位,都是我想要的结果。
awk 真是强大啊!!

论坛徽章:
0
5 [报告]
发表于 2009-03-26 16:56 |只看该作者

回复 #2 blackold 的帖子

awk 'NR==FNR{s+=$1}NR>FNR{printf("%s %.2f%%\n",$2,$1/s*100)}' urfile urfile

请教黑哥,能解释一下吗?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2009-03-26 17:01 |只看该作者

回复 #5 sby0329 的帖子

就是第一遍历文件时求总和,第二次遍历时输出结果。
改一下更好:
  1. awk 'NR==FNR{s+=$1;next}{printf("%s %.2f%%\n",$2,$1/s*100)}' urfile urfile
复制代码

论坛徽章:
0
7 [报告]
发表于 2009-03-26 17:05 |只看该作者

回复 #6 blackold 的帖子

学习了,谢谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP