免费注册 查看新帖 |

Chinaunix

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

小脚本思路求助~~~ [复制链接]

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-24 18:58 |只看该作者 |倒序浏览
小弟现有数据如下:
12
32
45
677
55
333
4456
8887
331
678
235
...
...
文件中均是数字,现在想统计这些数字在0-100,100-200,.....各区间中的个数,之前写过一个小脚本,如下:
#!perl-w
use strict;
open IN,"$ARGV[0]" || die "no....";
open OUT,">$ARGV[0]_tongjiout.fasta";
my @lengthh=();
while(<IN>) {
        chomp;
        my $line=$_;
       
        if ($line        >=0 && $line        <100){$lengthh[0]++;}
        elsif($line        >=100  && $line        <200){$lengthh[1]++;}
        elsif($line        >=200 && $line        <300){$lengthh[2]++;}
        elsif($line        >=300 && $line        <400){$lengthh[3]++;}
        elsif($line        >=400 && $line        <500){$lengthh[4]++;}
        elsif($line        >=500 && $line        <600){$lengthh[5]++;}
        elsif($line        >=600 && $line        <700){$lengthh[6]++;}
        elsif($line        >=700 && $line        <800){$lengthh[7]++;}
        elsif($line        >=800 && $line        <900){$lengthh[8]++;}
        elsif($line        >=900 && $line        <1000){$lengthh[9]++;}
        elsif($line        >=1000 && $line        <1100){$lengthh[10]++;}
        elsif($line        >=1100 && $line        <1200){$lengthh[11]++;}
        elsif($line        >=1200 && $line        <1300){$lengthh[12]++;}
        elsif($line        >=1300 && $line        <1400){$lengthh[13]++;}
        elsif($line        >=1400 && $line        <1500){$lengthh[14]++;}
        elsif($line        >=1500 && $line        <1600){$lengthh[15]++;}
        elsif($line        >=1600 && $line        <1700){$lengthh[16]++;}
        elsif($line        >=1700&& $line        <1800){$lengthh[17]++;}
        elsif($line        >=1800 && $line        <1900){$lengthh[18]++;}
        elsif($line        >=1900 && $line        <2000){$lengthh[19]++;}
        elsif($line        >=2000 && $line        <2100){$lengthh[20]++;}
        elsif($line        >=2100 && $line        <2200){$lengthh[21]++;}
        elsif($line        >=2200 && $line        <2300){$lengthh[22]++;}
        elsif($line        >=2300 && $line        <2400){$lengthh[23]++;}
        elsif($line        >=2400 && $line        <2500){$lengthh[24]++;}
        elsif($line        >=2500 && $line        <2600){$lengthh[25]++;}
        elsif($line        >=2600 && $line        <2700){$lengthh[26]++;}
        elsif($line        >=2700 && $line        <2800){$lengthh[27]++;}
        elsif($line        >=2800 && $line        <2900){$lengthh[28]++;}
        elsif($line        >=2900 && $line        <3000){$lengthh[29]++;}
        elsif($line        >=3000 && $line        <3100){$lengthh[30]++;}
       
        elsif($line        >=3100 && $line        <3200){$lengthh[31]++;}
        elsif($line        >=3200 && $line        <3300){$lengthh[32]++;}
        elsif($line        >=3300 && $line        <3400){$lengthh[33]++;}
        elsif($line        >=3400 && $line        <3500){$lengthh[34]++;}
        elsif($line        >=3500 && $line        <3600){$lengthh[35]++;}
        elsif($line        >=3600 && $line        <3700){$lengthh[36]++;}
        elsif($line        >=3700 && $line        <3800){$lengthh[37]++;}
        elsif($line        >=3800 && $line        <3900){$lengthh[38]++;}
        elsif($line        >=3900 && $line        <4000){$lengthh[39]++;}
        elsif($line        >=4000 && $line        <4100){$lengthh[40]++;}
        elsif($line        >=4100 && $line        <4200){$lengthh[41]++;}
        elsif($line        >=4200 && $line        <4300){$lengthh[42]++;}
        elsif($line        >=4300 && $line        <4400){$lengthh[43]++;}
        elsif($line        >=4400 && $line        <4500){$lengthh[44]++;}
        elsif($line        >=4500 && $line        <4600){$lengthh[45]++;}
        elsif($line        >=4600 && $line        <4700){$lengthh[46]++;}
        elsif($line        >=4700 && $line        <4800){$lengthh[47]++;}
        elsif($line        >=4800 && $line        <4900){$lengthh[48]++;}
        elsif($line        >=4900 && $line        <5000){$lengthh[49]++;}
        elsif($line        >=5000 && $line        <5100){$lengthh[50]++;}
        elsif($line        >=5100 && $line        <5200){$lengthh[51]++;}
       
        elsif($line        >=5200 && $line        <5300){$lengthh[52]++;}
        elsif($line        >=5300 && $line        <5400){$lengthh[53]++;}
        elsif($line        >=5400 && $line        <5500){$lengthh[54]++;}
        elsif($line        >=5500 && $line        <5600){$lengthh[55]++;}
        elsif($line        >=5600 && $line        <5700){$lengthh[56]++;}
        elsif($line        >=5700 && $line        <5800){$lengthh[57]++;}
        elsif($line        >=5800 && $line        <5900){$lengthh[58]++;}
        elsif($line        >=5900 && $line        <6000){$lengthh[59]++;}
        elsif($line        >=6000 ){$lengthh[60]++;}
       
       
       
       
   }
        foreach(@lengthh){
                print OUT "$_\n";
               
                }
       

小弟自己看着都难受,但又想不出该咋写,半路出家学写程序,还望大神指点迷津~~~~~
小弟万分感谢!!!!!!

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
2 [报告]
发表于 2012-08-24 19:48 |只看该作者
本帖最后由 cdtits 于 2012-08-24 20:09 编辑
  1. %lengthh;

  2. open IN,"$ARGV[0]" || die "no....";
  3. open OUT,">$ARGV[0]_tongjiout.fasta";
  4. while (<IN>) {
  5.     $lengthh{int($_ / 100)}++;
  6. }
  7. for (sort { $a <=> $b; } keys %lengthh) {
  8.     print OUT "$_\t=> $lengthh{$_}\n";
  9. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-08-24 19:55 |只看该作者
  1. @lengthh;
  2. while(<DATA>){
  3.     $lengthh[int($_/100)]++;
  4. }
  5. __DATA__
  6. 12
  7. 32
  8. 45
  9. 677
  10. 55
  11. 333
  12. 4456
  13. 8887
  14. 331
  15. 678
  16. 235
复制代码
建议用%lengthh,这里用数组可能不是你希望的结果

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
4 [报告]
发表于 2012-08-24 19:56 |只看该作者
回复 2# cdtits


    膜拜~~~~跪谢   太厉害了 ~~~~

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
5 [报告]
发表于 2012-08-24 19:57 |只看该作者
回复 3# sjdy521


    同膜拜 ~~~~跪谢~~~

论坛徽章:
0
6 [报告]
发表于 2012-08-24 20:00 |只看该作者
回复 2# cdtits


    额,我刚发完贴,还以为是第一个回答的,没想到。。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
7 [报告]
发表于 2012-08-24 20:43 |只看该作者
回复 1# albertkingking


    朋友代码第一行的 open 就写错了,用|| 时 open 记得加括号,否则就用 or

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
8 [报告]
发表于 2012-08-24 20:47 |只看该作者
本帖最后由 cdtits 于 2012-08-24 20:47 编辑

回复 7# zhlong8


    细节决定...
    我看来还得多多磨练

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11
9 [报告]
发表于 2012-08-24 21:33 |只看该作者
回复 7# zhlong8


    谢谢提醒  看来还是得好好看看书  十分感谢!

论坛徽章:
0
10 [报告]
发表于 2012-08-25 01:00 |只看该作者
回复 7# zhlong8
测试没有报错呢,这里应该可以直接这样写吧


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP