免费注册 查看新帖 |

Chinaunix

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

如何统计一个文件的行数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-14 11:06 |只看该作者 |倒序浏览
本帖最后由 viato 于 2012-03-14 11:08 编辑

各位大虾,请教一个问题
一个文件格式如下,
awk '{ if($3==1){print $3} }' filename | wc -l   可以统计第3列在这个文件里面有多少行,请问怎么用一个脚本统计第3列里面1、2 到 20 分别占用的行数

  1. 28        1609  1        5        7
  2. 19        4016  4        5        7
  3. 56        9329  3        5        7
  4. 13        7229  1        5        7
  5. 16        5159  5        5        7
  6. 14        1681  3        5        7
  7. 70        1628  6        5        7
  8. 44        2812  1        5        7
  9. 11        4921  7        5        7
  10. 25        1641  3        5        7
  11. 10        1641  8        5        7
  12. 72        4128  1        5        7
  13. 10        1849  9        5        7
  14. 36        2081  3        5        7
  15. 16        9329  5        5        7
  16. 90        1061  1        5        7
  17. 15        9329  3        5        7
  18. 31        2209  4        5        7
  19. 34        3378  2        5        7
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-03-14 11:20 |只看该作者
  1. $ awk '{a[$3]+=1}END{for(i in a)print i,a[i]}' file
  2. 4 2
  3. 5 2
  4. 6 1
  5. 7 1
  6. 8 1
  7. 9 1
  8. 1 5
  9. 2 1
  10. 3 5
复制代码
是这意思吧

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2012-03-14 11:23 |只看该作者
$ awk '{a[$3]++}END{for(n=1;n<=20;n++)printf("got %2d have %2d times\n",n,a[n])}' filename
got  1 have  5 times
got  2 have  1 times
...
got 19 have  0 times
got 20 have  0 times

论坛徽章:
0
4 [报告]
发表于 2012-03-14 11:28 |只看该作者
回复 3# jason680


用这个脚本可以,谢谢

论坛徽章:
0
5 [报告]
发表于 2012-03-14 11:30 |只看该作者
回复 2# deepalley


  这个会显示成这样
10 952
434 1
11 218
899 1

论坛徽章:
0
6 [报告]
发表于 2012-04-16 15:46 |只看该作者
  1. 28        1609  sh        5        7
  2. 19        4016  bj        5        7
  3. 56        9329  gd        5        7
  4. 13        7229  gd        5        7
  5. 16        5159  sh        5        7
  6. 14        1681  bj        5        7
  7. 70        1628  sh        5        7
  8. 44        2812  gd        5        7
  9. 11        4921  sh        5        7
  10. 25        1641  bj        5        7
  11. 10        1641  gd        5        7
  12. 72        4128  sh        5        7
  13. 10        1849  bj        5        7
  14. 36        2081  gd        5        7
  15. 16        9329  sh        5        7
  16. 90        1061  bj        5        7
  17. 15        9329  gd        5        7
  18. 31        2209  bj        5        7
  19. 34        3378  gd        5        7
复制代码
如果第3列是字母,哪怎么统计第3列中每个城市占用的数量呀

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2012-04-16 15:56 |只看该作者
回复 6# viato


    这不一样吗?
awk '{a[$3]+=1}END{for(i in a)print i,a}'

论坛徽章:
0
8 [报告]
发表于 2012-04-16 16:20 |只看该作者
回复 2# deepalley


    盗用你的一下
  1. awk '{a[$3]+=1}END{len=asorti(a,b);for(i=1;i<=len;i++)print b[i],a[b[i]]}' file
复制代码

论坛徽章:
0
9 [报告]
发表于 2012-04-16 17:15 |只看该作者
回复 7# 昭襄王

出现以下错误
    awk: (FILENAME=file FNR=417) fatal: attempt to use array `a' in a scalar context

论坛徽章:
0
10 [报告]
发表于 2012-04-16 17:16 |只看该作者
回复 8# dahaoshanhe


   这个可以,不过好像有的城市是 tab键 或者空格,不知道这个怎么去掉
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP