免费注册 查看新帖 |

Chinaunix

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

如果第一行第一列相同,打印第一行,第二行,第三行,第四行。 [复制链接]

论坛徽章:
2
操作系统版块每日发帖之星
日期:2016-06-13 06:20:00操作系统版块每日发帖之星
日期:2016-06-14 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-17 10:59 |只看该作者 |倒序浏览
各位大侠,

如果第一行第一列相同,打印第一行,第二行,第三行,第四行。

01.txt
>SR1.2

02.txt
>SR1.1 HWI-ST
ATGCTGCT
TCGTCGAT
CTGATCAGCTAC
>SR1.2 HWI-ST0
TTTTGCTGCT
TCGTTGGG
CTTTATCAGCTAC
>SR1.3 HWI-ST0787
GGGGGCTGCT
AATCGTCGAT
AACTGATCAGCTAC

结果:
>SR1.2 HWI-ST0
TTTTGCTGCT
TCGTTGGG
CTTTATCAGCTAC

自己遍的程序,错在哪里?

open(IN1,"01.txt") || die "Cannot open this file";

@lines1 = <IN1>;

open(IN2,"02.txt") || die "Cannot open this file";

@lines2 = <IN2>;


open(OUT,">out01") || die "Cannot open this file";

for $item1(@lines1){

        chomp $item1;


        #print OUT $item1,"\t";

@tmp1=split(/\s+/, $item1);


for $item2(@lines2){

        chomp $item2;

@tmp2=split(/\s+/, $item2);

                if ($tmp1[0] eq $tmp2[0]){

                        print OUT $lines2[$i],"\n",$lines2[$i+1],$lines2[$i+2],$lines2[$i+3];

                        last;       

                }

        $i++
}


print OUT "\n";


}


close(IN1);
close(IN2);

close(OUT);


先谢谢了!

求职 : Linux运维
论坛徽章:
3
戌狗
日期:2015-01-11 13:27:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯纪念徽章
日期:2015-05-08 15:03:30
2 [报告]
发表于 2015-04-17 11:04 |只看该作者
  1. print OUT $lines2[$i],"\n",$lines2[$i+1],$lines2[$i+2],$lines2[$i+3];
复制代码
$i从何而来?

求职 : Linux运维
论坛徽章:
3
戌狗
日期:2015-01-11 13:27:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯纪念徽章
日期:2015-05-08 15:03:30
3 [报告]
发表于 2015-04-17 11:12 |只看该作者

  1. #!/usr/bin/perl -w
  2. use strict;
  3. open(IN1,"01.txt") || die "Cannot open this file";
  4. my @lines1 = <IN1>;
  5. open(IN2,"02.txt") || die "Cannot open this file";
  6. my @lines2 = <IN2>;
  7. my $i=0;
  8. open(OUT,">out01") || die "Cannot open this file";
  9. for my  $item1(@lines1){
  10.         chomp $item1;
  11.         my@tmp1=split(/\s+/, $item1);
  12. for my  $item2(@lines2){
  13.         chomp $item2;
  14.         my @tmp2=split(/\s+/, $item2);
  15.                 if ($tmp1[0] eq $tmp2[0]){
  16.                         print OUT $lines2[$i],"\n",$lines2[$i+1],$lines2[$i+2],$lines2[$i+3];
  17.                         last;
  18.                 }
  19.         $i++;
  20. }
  21. print OUT "\n";

  22. }

  23. close(IN1);
  24. close(IN2);
  25. close(OUT);


  26. cat out01
  27. >SR1.2 HWI-ST0
  28. TTTTGCTGCT
  29. TCGTTGGG
  30. CTTTATCAGCTAC
复制代码

论坛徽章:
2
操作系统版块每日发帖之星
日期:2016-06-13 06:20:00操作系统版块每日发帖之星
日期:2016-06-14 06:20:00
4 [报告]
发表于 2015-04-17 11:42 |只看该作者
谢谢donalds2008快速的回答!

十分感谢!

如果01.txt变成;
01.txt
>SR1.2
>SR1.3

这个程序该如何改?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP