【发布时间】:2017-09-12 15:33:09
【问题描述】:
我是 perl 新手。我正在尝试读取一个大的逗号分隔文件,拆分并只抓取一些列。我可以通过一些互联网帮助创建它,但我正在努力更改代码以从特定行开始读取文件末尾。 我的需要是打开文件从第 12 行开始读取,拆分 ',' 获取第 0,2,10,11 列并将这些需要的列与 '\t' 连接起来。
这是我的代码
#!/usr/bin/perl
my $filename = 'file_to_read.csv';
open(FILER, $filename) or die "Could not read $filename.";
open(FILEW, ">$filename.txt") || die "couldn't create the file\n";
while(<FILER>) {
chomp;
my @fields = split(',', $_);
print FILEW "$fields[0]\t$fields[3]\t$fields[10]\t$fields[11]\n";
}
close FILER;
close FILEW;
这是文件示例:
[Header]
GSGT Version: X
Processing Date:12/01/2010 7:20 PM
Content:
Num SNPs:
Total SNPs:
Num Samples:
Total Samples:
Sample:
[Data]
SNP Name,Chromosome,Pos,GC Score,Theta,R,X,Y,X Raw,Y Raw,B Allele Freq,Log R Ratio,Allele1 - TOP,Allele2 - TOP
1:10001102-G-T,1,10001102,0.4159,0.007,0.477,0.472,0.005,6281,126,0.0000,-0.2581,A,A
1:100011159-T-G,1,100011159,0.4259,0.972,0.859,0.036,0.822,807,3648,0.9942,-0.0304,C,C
1:10002775-GA,1,10002775,0.4234,0.977,1.271,0.043,1.228,809,5140,0.9892,0.0111,G,G
【问题讨论】:
-
检查
$.的值。至少在 12 点之前不要做任何事情。 -
Matt 的意思是在
chomp之前添加行next if $. < 12;就可以了。见$.in perlvar
标签: perl