免费注册 查看新帖 |

Chinaunix

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

while嵌套问题(续) [复制链接]

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

我昨天发表了一个while嵌套问题(http://bbs.chinaunix.net/thread-4140711-1-1.html),stanley_tam 慷慨回复,但我只举了个例子,我实际的脚本还是有问题,我的目的是从INPUT文件中找LIST的行,print出来。 特指教, 非常谢谢!!
  1. #!/usr/bin/perl -w
  2. use strict;
  3. if (@ARGV<1){print "perl sta.pl LIST INPUT"; exit;}

  4. open LIST, '<', $ARGV[0];
  5. while(my $line = <LIST>){
  6.         chomp $line;
  7.         my @a = split/\t/,$line;
  8.         my $mirsite = "$a[0]"."$a[1]";
  9.         open FH, '<', $ARGV[1];
  10.         while (my $line2 = <FH>){
  11.                 chomp $line2;
  12.                 my @b = split/\t/, $line2;
  13.                 my $mirsite2 = "$b[0]"."$b[1]";  
  14.                 if ($mirsite eq $mirsite2 ){
  15.                         print "$line2\n"; last;
  16.                 }
  17.         }
  18.         close FH;
  19. }
  20. close LIST;
复制代码
我的LIST文件是:
miR172        AT1G19940.1:899
miR156        AT1G19920.1:1068

我的INPUT文件是:
miR156        AT1G19920.1:1068        5' AUGUUC-CUCUUGA-UGUUA 3'                 3' CACGAGUGAGAGAAGACAGU 5'        
miR390        AT1G19920.1:1247        5' GGUCGUGAUCCUGCAGGAAUGGGCCA 3'                 3' CC-GCGAUAGGGAGG----ACUCGAA 5'
miR172        AT1G19940.1:1411        5' UUGU-GCAUCAUAGAGGAGCU 3'                 3' UACGUCGUAGUAGUUCUAAGA 5'
miR408        AT1G19940.1:595        5' UUCAGGUGGGAGAUCCAGUGACGG 3'                 3' CGGUC--CCUUCUCCGUCAC-GUA 5'
miR172        AT1G19940.1:899        5' GGGCAGCUUCAU---GGUUGU 3'                 3' UACGUCGUAGUAGUUCUAAGA 5'

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2014-06-04 10:21 |只看该作者
解决这个问题, grep -Ff 更合适.

论坛徽章:
0
3 [报告]
发表于 2014-06-04 10:35 |只看该作者
求教脚本! 我希望perl专家给我指点我的脚本错在哪里? 非常谢谢!!

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
4 [报告]
发表于 2014-06-04 10:46 |只看该作者
回复 2# q1208c


    第一次用perl的grep~你说得对,还是linux的grep好用~

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
5 [报告]
发表于 2014-06-04 11:16 |只看该作者
回复 4# huang6894



你的 神兽 不错. 能贴个文本的给我不.     

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
6 [报告]
发表于 2014-06-04 11:23 |只看该作者
本帖最后由 huang6894 于 2014-06-04 11:30 编辑

回复 5# q1208c


    写得太烂,帮忙改改~
  1. #! /usr/bin/perl -w
  2. %f;
  3. if (@ARGV<1){print "perl $0 LIST INPUT"; exit;}
  4. open(F1,"< $ARGV[0]") || die "$!";
  5. open(F2,"< $ARGV[1]") || die "$!";
  6. my %f = map{$_ => 1} <F1>;
  7. my @inter = grep {$f{(split/\t/,$_)[0]."\t".(split/\t/,$_)[1]."\n"}} <F2>;
  8. print @inter;
  9. close F1;
  10. close F2;
复制代码

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
7 [报告]
发表于 2014-06-04 12:26 |只看该作者
本帖最后由 pitonas 于 2014-06-04 05:31 编辑

{:2_172:} 小伙伴们, 这个脚本是没有什么问题, 但是,写得太烂

1: hash
2:array
3:seek
4pen

回复 1# pony2001mx


   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
8 [报告]
发表于 2014-06-04 12:29 |只看该作者
小伙伴们, 这个脚本是没有什么问题, 但是,写得太烂
一行, 你 split 两次

回复 6# huang6894


   

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
9 [报告]
发表于 2014-06-04 12:31 |只看该作者
回复 8# pitonas


    (*^__^*) 嘻嘻……我也觉得

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
10 [报告]
发表于 2014-06-04 12:40 |只看该作者

(*^__^*)  如何解决?

回复 9# huang6894


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP