免费注册 查看新帖 |

Chinaunix

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

一个awk 统计问题的求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-19 15:04 |只看该作者 |倒序浏览
数据
    physicaldrive 3I:1:1 (port 3I:box 1:bay 1, SAS, 146 GB, OK)
      physicaldrive 3I:1:2 (port 3I:box 1:bay 2, SAS, 146 GB, OK)
      physicaldrive 3I:1:3 (port 3I:box 1:bay 3, SAS, 146 GB, OK)
      physicaldrive 3I:1:4 (port 3I:box 1:bay 4, SAS, 146 GB, OK)
      physicaldrive 4I:1:5 (port 4I:box 1:bay 5, SAS, 146 GB, OK)
      physicaldrive 2E:1:1 (port 2E:box 1:bay 1, SATA, 750 GB, OK)
      physicaldrive 2E:1:2 (port 2E:box 1:bay 2, SATA, 750 GB, OK)
      physicaldrive 2E:1:3 (port 2E:box 1:bay 3, SATA, 750 GB, OK)
      physicaldrive 2E:1:4 (port 2E:box 1:bay 4, SATA, 750 GB, OK)
      physicaldrive 2E:1:5 (port 2E:box 1:bay 5, SATA, 750 GB, OK)
      physicaldrive 2E:1:6 (port 2E:box 1:bay 6, SATA, 750 GB, OK)
      physicaldrive 2E:1:7 (port 2E:box 1:bay 7, SATA, 750 GB, OK)
      physicaldrive 2E:1:8 (port 2E:box 1:bay 8, SATA, 750 GB, OK)
      physicaldrive 2E:1:9 (port 2E:box 1:bay 9, SATA, 750 GB, OK)
      physicaldrive 2E:1:10 (port 2E:box 1:bay 10, SATA, 750 GB, OK)
      physicaldrive 2E:1:11 (port 2E:box 1:bay 11, SATA, 750 GB, OK)
      physicaldrive 2E:1:12 (port 2E:box 1:bay 12, SATA, 750 GB, OK)

      想得到如下结果 SAS  146 GB 5     做一下硬盘数量的统计
                             SATA  750 GB 12

      但是我写的awk -F"[,]" '{count[$3]++}END{for (disk in count)print $2,disk,count[disk]}'  这个有问题,应该是不能直接打印$2 ,而是应该打印$2数组中的元素,不过我数组这块学的不太明白,请教高手帮忙看看应该怎么写,学习一下。谢谢大家了。

论坛徽章:
0
2 [报告]
发表于 2010-03-19 15:18 |只看该作者
BEGIN { FS = "," }
{
  array[$2]=$3
  array1[$2]++
}
END{
   for ( i in array ){
    print i"|"array[i]"|"array1[i]
}
}

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
3 [报告]
发表于 2010-03-19 15:28 |只看该作者
本帖最后由 liaosnet 于 2010-03-19 15:33 编辑

  1. awk -F',' '{a[$(NF-2)" "$(NF-1)]++}END{for(i in a) print i,a[i]}'
复制代码
最近打习惯了printf ...这个用print

论坛徽章:
0
4 [报告]
发表于 2010-03-19 15:29 |只看该作者
  1. awk -F, '{a[$3]=$2;b[$3]++}END{for(i in a)print a[i],$3,b[i]}'
复制代码

论坛徽章:
0
5 [报告]
发表于 2010-03-19 15:30 |只看该作者
能给咱稍微讲一下么

论坛徽章:
0
6 [报告]
发表于 2010-03-19 15:33 |只看该作者
没有时间啊~兄弟~
手里都有活儿那

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
7 [报告]
发表于 2010-03-19 15:33 |只看该作者
从哪里讲起呢?哪里看不懂就直接问吧

论坛徽章:
0
8 [报告]
发表于 2010-03-19 15:35 |只看该作者
awk -F'[ |,]' '{a[$8" "$10]++}END{for (i in a) print i"\t"a[i]}' file

论坛徽章:
0
9 [报告]
发表于 2010-03-19 15:43 |只看该作者
受到8楼启发 ,awk -F"[,]" '{count[$2$3]++}END{for (disk in count)print disk,count[disk]}'

一个数组里面可以包含几个不同的字段啊,这样写看来是最简化的。

论坛徽章:
0
10 [报告]
发表于 2010-03-19 15:46 |只看该作者
另外从3楼学到了,字段名字还可以 $(NF-2) $(NF-1)这么写,不过这样写是不是离字段尾部近写起来更容易,有没啥特定说法?NF怎么用起来更好呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP