免费注册 查看新帖 |

Chinaunix

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

awk数组下标什么时候用NR? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-14 01:21 |只看该作者 |倒序浏览
awk数组下标什么时候用NR?请高手们解释一下。
我在看一个关于计算学生平均成绩的脚本中遇到了这个问题。student_avg[NR]=avg

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
2 [报告]
发表于 2008-12-14 01:27 |只看该作者
原帖由 shichunda 于 2008-12-14 01:21 发表
awk数组下标什么时候用NR?请高手们解释一下。
我在看一个关于计算学生平均成绩的脚本中遇到了这个问题。student_avg[NR]=avg

使用NR做下标,数组跟源文件顺序一致;求数组个数,计算平均值也比较方便。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2008-12-14 01:31 |只看该作者
当你该用的时候

论坛徽章:
1
2015年亚洲杯之韩国
日期:2015-04-24 09:07:02
4 [报告]
发表于 2008-12-14 07:25 |只看该作者
这个嘛  可能真的要实际使用多体会

论坛徽章:
0
5 [报告]
发表于 2008-12-14 16:09 |只看该作者
能举两个例子吗?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2008-12-14 16:22 |只看该作者
这个嘛,取决于编程的思路、算法吧.
其实我是觉得这个问题问的有点怪,可能你才刚开始学awk吧,随着awk用的越来越多,对awk编程的手段了解的越来越深,这个就不是问题。

论坛徽章:
1
2015年亚洲杯之韩国
日期:2015-04-24 09:07:02
7 [报告]
发表于 2008-12-14 19:18 |只看该作者

回复 #6 cjaizss 的帖子

l楼上的兄弟说是! 慢慢熟悉了 就好像有了条件反射就可以了

论坛徽章:
0
8 [报告]
发表于 2008-12-14 19:57 |只看该作者
是刚开始学awk,所以在如何使用方面还欠缺经验。原代码如下:


BEGIN{FS=" "}
{total=0
       for(i=2;i<=NF;++i)
               total+=$i
       avg=total/(NF-1)

       if(avg>=90)
               grades="A"
       else if(avg>=80)
               grades="B"
       else if(avg>=70)
               grades="C"
       else if(avg>=60)
               grades="D"
       else
               grades="Fails"


       ++class_grades[grades]

       student_grades[NR]=avg

       print $1,avg,grades

}
END{    for(x=1;x<=NR;++x)
               class_avg_total+=student_grades


       class_avg=class_avg_total/NR

   for(i=1;i<=NR;++i)
        if(student_grades>=class_avg)
                ++up_class_avg
        else
                ++down_class_avg

       print ""
       print "class_avg:"class_avg;print"up class avg:"up_class_avg;print"down class avg:"down_class_avg

       for(x in class_grades)
               print x,class_grades

}


总是觉得student_grades[NR]=avg用的太突然了,虽然在这里能理解但还是不会用。
也许像楼上所说的那样吧,得多联系。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP