| 查看: 1413 | 回复: 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
- 附件 2 : b.txt
2012-07-27 00:05:34, 740 bytes
2012-07-27 00:05:48, 562 bytes
» 猜你喜欢
不自信的我
已经有5人回复
磺酰氟产物,毕不了业了!
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有16人回复
投稿Elsevier的杂志(返修),总是在选择OA和subscription界面被踢皮球
已经有8人回复
» 本主题相关价值贴推荐,对您同样有帮助:
磁性粒子团聚成这个样子了,求大神指点啊~~
已经有37人回复
急急急,,急求大神帮忙翻译一下,跪谢!!!
已经有2人回复
请帮忙编写一个perl程序处理文本
已经有26人回复
求大神帮我看下我这个方案
已经有10人回复
这个反应怎么操作,求做过此反应的大神指点
已经有11人回复
Perl 生物信息学编程求助,运行出现问题,烦请帮忙查找一下错误,谢谢!
已经有3人回复
求教一个origin中的问题,求大神指点
已经有4人回复
Perl 编程 请大神们帮忙!!!生物信息的牛人请进
已经有11人回复
matlab作业哪位大神麻烦给做一下,十万火急,周五之间要交
已经有3人回复
程序语言版拟开新子版“Shell&Perl&Python”
已经有10人回复
【求助】求高人帮我修改程序
已经有5人回复
wizardfan
至尊木虫 (著名写手)
- 应助: 599 (博士)
- 贵宾: 1.818
- 金币: 24628.2
- 散金: 197
- 红花: 48
- 沙发: 2
- 帖子: 2254
- 在线: 400.7小时
- 虫号: 1879241
- 注册: 2012-07-05
- 性别: GG
- 专业: 生物信息学
【答案】应助回帖
★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
xzhdty: 金币+1, 谢谢参与 2012-07-28 00:01:13
xiezhancnu: 金币+5 2012-08-11 09:35:09
感谢参与,应助指数 +1
xzhdty: 金币+1, 谢谢参与 2012-07-28 00:01:13
xiezhancnu: 金币+5 2012-08-11 09:35:09
|
use strict; #use Data: umper;opendir DIR, "total"; my @files = readdir DIR; closedir DIR; my %hash; #store all data into a big hash foreach my $file(@files){ next unless ($file=~/\.txt$/);#only deal with text file &dealOneFile($file); } #print Dumper(%hash); #find the union set of all keys from all files my %key; my @doneFiles = keys %hash; @doneFiles = sort {$a cmp $b} @doneFiles;#sort the file namess foreach my $tmp(@doneFiles){ my %oneFile = %{$hash{$tmp}}; # print Dumper(%oneFile); foreach (keys %oneFile){ $key{$_}++ } } #print Dumper(%key); #print header $"="\t"; print "file\t@doneFiles\n"; #print content foreach my $key(keys %key){ print "$key"; foreach my $file(@doneFiles){ print "\t"; print "$hash{$file}{$key}" if (exists $hash{$file}{$key}); } print "\n"; } sub dealOneFile{ my $filename = "$_[0]"; open IN,"total/$filename"; while(my $line= chomp($line); my ($key,$a,$b,$c,$value) = split("\t",$line); $hash{$_[0]}{$key}=$value; } } |
2楼2012-07-27 03:12:23
wizardfan
至尊木虫 (著名写手)
- 应助: 599 (博士)
- 贵宾: 1.818
- 金币: 24628.2
- 散金: 197
- 红花: 48
- 沙发: 2
- 帖子: 2254
- 在线: 400.7小时
- 虫号: 1879241
- 注册: 2012-07-05
- 性别: GG
- 专业: 生物信息学
7楼2012-07-27 23:28:31







;
回复此楼
umper;