24小时热门版块排行榜    

查看: 1414  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xiezhancnu

木虫 (小有名气)

[求助] perl程序求大神加以修改~~

现在有个文件夹TOTAL,该文件夹内有两个文件分别是a.txt和b.txt(见附件),我现在想生成这样的结果:
                  a.txt        b.txt(这一行可没有)
Os02t0249600-01        6236.420821        19861.20539
Os02t0242600-01                                      6550.062
Os03t0427300-01        7423.620595        26454.94742
Os01t0762500-00        5592.607026        31007.32272
第二行空格的意思是因为Os02t0242600-01在文件a.txt内没有对应的相,所以就空着!我现在写了一个程序,如下:
@gbk = glob('TOTAL/*');       
for($n=0;$n<=@gbk;$n++){
        open(input,"$gbk[$n]";       
        while(my $line={
     my @tmp=split("\t",$line);
     my $key = $tmp[0];  
     my $value = $tmp[4];  
     if (exists $hash{$key}){  
         $hash{$key} = $hash{$key}."\t".$value;  
     }else{
         $hash{$key} = $value;  
     }   
}
}       

delete $hash{GeneID};               
while(my($key,$value)=each %hash){
        print "$key\t$value\n";
}
生成的结果是这样的:
Os02t0249600-01        6236.420821        19861.20539
Os02t0242600-01        6550.062
Os03t0427300-01        7423.620595        26454.94742
Os01t0762500-00        5592.607026        31007.32272
也就是无法生成空格,第二行的6550.062应该在19861.20539这一列,请大神在我的 程序的基础上加以修改或者另写程序以实现我想要的结果,谢谢了~~~
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : a.txt
  • 2012-07-27 00:05:34, 740 bytes
  • 附件 2 : b.txt
  • 2012-07-27 00:05:48, 562 bytes

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiezhancnu

木虫 (小有名气)

引用回帖:
4楼: Originally posted by zhusheng303 at 2012-07-27 09:26:47
如果超过3个文件,解决方法如下,
@gbk = glob('TOTAL/*');
my $hash; ##### 构建一个hash变量     
for($n=0;$n<=@gbk;$n++){
        open(input,"$gbk";        
        while(my $line=< ...

跑不通啊,你试试!!
5楼2012-07-27 10:18:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiezhancnu

木虫 (小有名气)

引用回帖:
3楼: Originally posted by zhusheng303 at 2012-07-27 08:58:57
有以个问题要问你?
你在处理这个事,最终是不是只有这两文件?
如果是,解决办法如下,
while(my $line=<input>{
     my @tmp=split("\t",$line);
     my $key = $tmp;  
     my $valu ...

有很多文件的!
8楼2012-07-28 22:09:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiezhancnu

木虫 (小有名气)

送鲜花一朵
引用回帖:
6楼: Originally posted by zhusheng303 at 2012-07-27 13:38:37
我写了一个完整的perl脚本,具体见“parseFile.pl”(http://good.gd/2155638.htm),测试的结果见“结果.bmp”(http://good.gd/2155640.htm)
"第二行空格的意思是因为Os02t0242600-01在文件a.txt内没有对应 ...

你好,呵呵,我之前把文件弄错了,呵呵,a文件,b文件的名字弄颠倒了,呵呵,另外a、b文件只是测试文件,总共有七个文件的,呵呵,我还没测试一下您的程序是否能跑通,送您鲜花一朵吧,呵呵,这样的话生成结果是这样的:
Os02t0249600-01        6236.420821        19861.20539
Os02t0242600-01                                    6550.062
Os03t0427300-01        7423.620595        26454.94742
Os01t0762500-00        5592.607026        31007.32272
这样也许您就不觉得奇怪了吧!
9楼2012-07-28 22:28:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xiezhancnu 的主题更新
信息提示
请填处理意见