我有這樣的輸出數據:如何將此表格格式的輸出轉換爲Perl?
10dvex1_miRNA_ce.out.data|3331
10dvex1_misc_RNA_ce.out.data|0
10dvex1_rRNA_ce.out.data|60
10dvex1_snoRNA_ce.out.data|895
10dvex1_snRNA_ce.out.data|2127
11dvex1_miRNA_ce.out.data|3367
11dvex1_misc_RNA_ce.out.data|0
11dvex1_rRNA_ce.out.data|54
11dvex1_snoRNA_ce.out.data|839
11dvex1_snRNA_ce.out.data|1770
12dvex1_miRNA_ce.out.data|3321
12dvex1_misc_RNA_ce.out.data|0
12dvex1_rRNA_ce.out.data|50
12dvex1_snoRNA_ce.out.data|854
12dvex1_snRNA_ce.out.data|1821
我想這個輸出轉換這種格式,像如表:
`Fragment \t miRNA \t misc_RNA \t rRNA \t snRNA \t snoRNA`
10 \t 3331 \t 0 \t 60 \t 2127 \ 895 \n
11 \t 3367 \t 0 \t 54 \t 1770 \t 839 \n
12 \t 3321 \t 0 \t 50 \t 1821 \t 854 \n
我需要使用此表作爲輸入R.一些想法?我試圖用這個腳本perl的,但結果地圖無法很好:
#!/usr/bin/perl
use warnings;
use strict;
open(MYINPUTFILE, $ARGV[0]); # open for input
my @lines = <MYINPUTFILE>; # read file into list
print "Frag"."\t"."miRNA"."\t"."misc_RNA"."\t"."rRNA"."\t"."snRNA"."\t"."snoRNA"."\n";
foreach my $lines (@lines){
my $pattern = $lines;
$pattern =~ s/(.*)dvex\d_(.*)_(.*)\|(.*)/$1 $2 $4/g;
print $1."\t".$4;
}
close(MYINPUTFILE);
exit;
而結果:
Frag miRNA misc_RNA rRNA snRNA snoRNA
10 333110 010 6010 89510 212711 336711 011 5411 83911 177012 332112 012 5012
是不是這個想法。
優秀的成績!非常感謝!我是perl begginer,但我很興奮。謝謝。 –
請注意,但輸入文件的順序必須與標題順序相匹配。經過仔細觀察,上述輸出結果中有snoRNA和snRNA列交換。一個更好的腳本會從數據文件中提取標題,而不關心它的順序。 –
由Wall,Christiansen和Schwartz編寫的O'Reilly編程Perl書仍然是最好的恕我直言。 –