perl应用之提取snp后续处理:删除带有“—”的行

发布时间:2020-10-18编辑:脚本学堂
perl应用之提取snp后续处理:删除带有“—”的行

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;