perl 提取不重复的行

发布时间:2020-09-22编辑:脚本学堂
这里提供的程序,可以针对排完序的行这样处理,如果想对任意的行处理,用linux的命令:cat sort uniq就好了。

提取文本中不相同行的命令:
比如:
31256        36588        642273
31256        36588        642273
31256        31607        642273
31608        31627        642273
35440        36385        642273
36386        36588        642273
98013        103345        642273
98013        103345        642273

重复的就要一次,得到:
31256        36588        642273
31256        31607        642273
31608        31627        642273
35440        36385        642273
36386        36588        642273
98013        103345        642273

代码
 

复制代码 代码如下:

#!/usr/bin/perl

use warnings;
use strict;

my $line = '';
open(INFILE, "E:/finagene/chr_19.txt");
open OUT1,'+>E:/finagene/chuli_chr_19.txt';

while (<INFILE>){
        if($_ ne $line){
                print OUT1 "$_n";;
                $line = $_;
        }
}
exit;

有朋友说这段程序有误,序列太简单了。
31256        36588        642273
31256        36588        642273
31256        31607        642273
31608        31627        642273
35440        36385        642273
36386        36588        642273
98013        103345        642273
98013        103345        642273
31256        36588        642273   #这是多加入的一行,输出就错误了。

其实,这里提供的程序,可以针对排完序的行这样处理,如果想对任意的行处理,用linux的命令:cat sort uniq就好了。