perl应用之提取snp后续处理:删除带有“—”的行,供大家学习参考。
数据结构如下所示:
10000470 A A A A A A - A A A A - C A A - A - A
10000552 C C C C C C - C C C C - T C C - C - C
10000565 G G T G G G - G - T G - T G G - G - G
10000566 T T C T T T - T - C T - C T T - T - T
10000567 T T G T T T - T - G T - G T T - T - T
10000685 G G - G G G - A - - G - - G A - A - G
10000690 T T - C T T - T - - T - - T T - T - T
10000917 G G - G G R G A - - G - - G A G A G G
10000955 G G - G G G G G - - G - A G G G G G G
10000974 A A - A A A A A - - A - G A A A A A A
10000993 C T - C C C C C - - C - C C C C C C C
10001005 A A - A A A A A - - A - G A A A A A A
1000114 G G C G G G G G G G G G G G G G G G G
10001291 T T - T T A T T - - T - T T T T T T T
要求:去除所有包含‘—’的行,剩下其余所有的行。
程序的基本思路:
把一行变成数组,如果遇到‘—’那么$cout就+1;最后判断的条件就是,如果$cout==0;也就是一个-都没有,那么这一行留下。然后把$cout重新赋值为0,然后进行下一个循环。
程序如下:
#!/usr/bin/perl
use strict;
use warnings;
my @datas;
my $data;
my $numb=0;
my $output;
open (SNP,"without_repeat_information.txt")||die("can not open !");
open (MORE,">without-without_repeat_information.txt")||die("can not open!");
while(<SNP>)
{
chomp($_);
$output=$_;
@datas=split;
foreach $data(@datas)
{
if ($data=~"-")
{
$numb++;
}
else
{
next;
}
}
if ($numb==0)
{
$numb=0;
print MORE "$outputn";
}
else
{
$numb=0;
}
}