免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yinyuemi
打印 上一主题 下一主题

[学习共享] awk数组的学习心得 [复制链接]

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
31 [报告]
发表于 2011-07-29 12:35 |只看该作者
回复 30# fengfeng919

  1.     echo 'a 1
  2. b 1
  3. a 2
  4. b 2
  5. a 3
  6. b 3' |\
  7. awk '{a[$1]+=$2;b[$1]++}END{for(i in a)print i,a[i]/b[i]}' #数组a求和,b数组求次数,最后打印平均值
  8. a 2
  9. b 2
复制代码

论坛徽章:
0
32 [报告]
发表于 2011-07-29 14:21 |只看该作者
本帖最后由 fengfeng919 于 2011-07-29 14:23 编辑
回复  fengfeng919
yinyuemi 发表于 2011-07-29 12:35



    整体意思我了解,就是 a[$1]+=$2 形式,它咋就成了求和的意义了呢,这种用法我不理解,没有C基础,杯具我,也不知道是不是钻了牛角尖 -_-

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
33 [报告]
发表于 2011-07-29 14:23 |只看该作者
回复 32# fengfeng919


    21楼正好是说这个的

论坛徽章:
0
34 [报告]
发表于 2011-08-01 15:30 |只看该作者
好贴啊

论坛徽章:
0
35 [报告]
发表于 2011-08-02 16:12 |只看该作者
回复 1# yinyuemi


<4> 数组的长度:
length(array)  

这个好像不能算出数组的长度???例如:
echo 'a
b' | awk '{array[$1]++} END{ print length(array)}'
报错:
无法读取值 a。它是一个数组名
注:
length函数是计算字符串的字符个数。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
36 [报告]
发表于 2011-08-02 23:13 |只看该作者
回复 35# java_html
  1. echo 'a
  2. b' | awk '{array[$1]++} END{ print length(array)}'
  3. 2
复制代码
没问题啊, 你测试的代码是这个么?

论坛徽章:
0
37 [报告]
发表于 2011-08-03 10:28 |只看该作者
回复 36# yinyuemi


    awk版本有点低,不支持;awk 3.1.6支持!!另一问题,在aix的ksh下查看awk版本真心难,,man awk没有版本信息。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
38 [报告]
发表于 2011-08-03 12:06 |只看该作者
回复 37# java_html


    试试awk --version

论坛徽章:
0
39 [报告]
发表于 2011-08-03 19:59 |只看该作者
学习了。谢谢!

论坛徽章:
0
40 [报告]
发表于 2011-08-04 09:13 |只看该作者
本帖最后由 d_jacky 于 2011-08-04 09:17 编辑

问一下,这条指令为什么要这样写,谢谢
oracle@node2:~> seq 20 |awk '/\<10\>/{for(i=NR-3;i<NR;i++)print a[i%3];exit}{a[NR%3]=$0;}'             而这里却只打印前三行,谢谢。改如何解释
7
8
9
oracle@node2:~> seq 20 |awk '/\<10\>/{for(i=NR-3;i<NR;i++)print a[i%3];exit}{print a[NR%3]=$0;}'       为什么多了一个print就把所有的打印了
1
2
3
4
5
6
7
8
9
7
8
9
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP