免费注册 查看新帖 |

Chinaunix

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

[文本处理] 统计文件中不同类型的数目 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-03 16:51 |只看该作者 |倒序浏览
本帖最后由 gooderpan 于 2014-10-03 16:52 编辑

有一个文件file1:(tab分隔)
track name=STRINGENT_LT_1KB
chr3    23232   asdbaskjdb
chr3    32434   daffsf
chr5    43131   dkfjkdjgkdjgk
chr6    4574857   wejwe
chr7    11313     sjdjsgd
chr8    2323     lskdkss
track name=STRINGENT_HIGH_SCORE
chr1   1212123      fkekfhd
chr2   2322342     ererer
chr2   43444        sdsdsd
chr3    454545      dkfjdkjfk
chr5    343434     qsadjhdjh
track name=STRINGENT_LT_332KB
track name=STRINGENT_LOW_SCORE
chr7   2323232    sdsdsdaaa
chr10  223232    dssdsds
chr19   677675   dlkslk

想要统计不同track name下的数目,结果如下:(tab分隔)
track name=STRINGENT_LT_1KB:6
track name=STRINGENT_HIGH_SCORE:5
track name=STRINGENT_LT_332KB:0
track name=STRINGENT_LOW_SCORE:3

请问该怎么弄呀??谢谢啦!



论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
2 [报告]
发表于 2014-10-03 18:52 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

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


    十一期间,shell 版zooyo版大值班啊

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
4 [报告]
发表于 2014-10-03 22:04 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2014-10-04 00:10 |只看该作者
乱序:

  1. gawk '{if($1=="track"){o=$0;a[o]=0}else{a[o]++}}END{for (x in a ){print x":"a[x]}}'  file
  2. track name=STRINGENT_LT_1KB:6
  3. track name=STRINGENT_LT_332KB:0
  4. track name=STRINGENT_HIGH_SCORE:5
  5. track name=STRINGENT_LOW_SCORE:3
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
6 [报告]
发表于 2014-10-04 18:40 |只看该作者
  1. $ awk '{if(/^t/){if(NR>1)print s":"n;n=0;s=$0}else n++}END{print s":"n}' i
  2. track name=STRINGENT_LT_1KB:6
  3. track name=STRINGENT_HIGH_SCORE:5
  4. track name=STRINGENT_LT_332KB:0
  5. track name=STRINGENT_LOW_SCORE:3
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
7 [报告]
发表于 2014-10-04 18:40 |只看该作者
本帖最后由 yestreenstars 于 2014-10-04 18:40 编辑

发重了,请忽略~{:3_194:}

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
8 [报告]
发表于 2014-10-07 06:44 |只看该作者
学生党:飘过~包...夜..无聊中~简单python实现一下

  1. $ cat yhsafe.py
  2. #!/usr/bin/env python
  3. #-*- coding:utf-8 -*-
  4. "like awk get file cates counts! -- just for fun ~"
  5. import re
  6. import linecache as lc
  7. import sys
  8. list={}
  9. cnt=0
  10. pattern=re.compile(r'(track name=\w+)')
  11. for line in lc.getlines(sys.argv[1]):
  12.         if re.match(pattern,line):
  13.                 str=re.match(pattern,line).string.strip()
  14.                 cnt=0
  15.                 list[str]=cnt
  16.         else:
  17.                 cnt+=1
  18.                 list[str]=cnt

  19. for x in list:
  20.         print "%-50s%-20s" % (x,list[x])

复制代码
测试:
$ ./yhsafe.py yhsafe.txt
track name=STRINGENT_LOW_SCORE                    3
track name=STRINGENT_LT_1KB                           6
track name=STRINGENT_LT_332KB                        0
track name=STRINGENT_HIGH_SCORE                   5

论坛徽章:
3
天秤座
日期:2013-12-19 06:33:48IT运维版块每日发帖之星
日期:2016-07-29 06:20:00IT运维版块每日发帖之星
日期:2016-08-13 06:20:00
9 [报告]
发表于 2015-04-24 16:54 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
10 [报告]
发表于 2015-04-25 12:46 |只看该作者
  1. awk '/track/{a[++i]=$0;next}{b[a[i]]++}END{for(i in a)print a[i],b[a[i]]?b[a[i]]:0}' inputfile
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP