perl刪除檔案中的重複行

2021-06-17 20:20:15 字數 1182 閱讀 3874

perl刪除檔案中的重複行

2011-09-28 19:59:57

分類: python/ruby

如果有乙個檔案data有10g大,但是有好多行都是重複的,需要將該檔案中重複的行合併為一行,那麼我們需要用什麼辦法來實現

cat data |sort|uniq > new_data #該方法可以實現,但是你需要花上好幾個小時。結果才能出來。

下面是乙個使用perl指令碼來完成此功能的小工具。原理很簡單,建立乙個hash,每行的內容為鍵,值由每行出現的次數來填充,指令碼如下;

#!/usr/bin/perl

# author :caojiangfeng

# date:2011-09-28

# version

:1.0

use warnings;

use strict;

my %hash;

my $script

= $0; # get the script

name

sub usage

# if the number of parameters less than 2 ,exit the script

if ( $#argv+1 < 2)

my $source_file = $argv[0]

; #file need to remove duplicate rows

my $dest_file = $argv[1]

; # file after remove duplicates rows

open (

file

,"<$source_file"

)  or die "cannot open file $!\n"

;open (sorted,

">$dest_file"

) or die "cannot open file $!\n"

;while(defined (my $line =

<

file

>))

+= 1;

#       print "$line,$hash\n";}

foreach my $k (keys %hash)

\n";#改行列印出列和該列出現的次數到目標檔案

}close (

file);

close (sorted);

刪除檔案中重複的行

今天在經過多次執行指令碼後時候突然發現 etc hosts下面有好多重複的行,突然想起來之前記得學過有命令的,但是忘了,後來在群裡面吼了幾句,有好多牛人相應,閒來與大家分享,o o root zy zy cat etc hosts do not remove the following line,o...

Perl去除檔案的重複行

perl去除檔案重複行的指令碼輸入檔案 perl去除檔案重複行的指令碼 usr bin perl use warnings use strict my hash my source file read.log 讀取檔案 my katex parse error expected eof got at...

awk中刪除重複行

在awk中,可以用!a 0 做為條件,對重複出現的行進行處理。bash 3.2 cat 2 abcabc ef123 dgag 123 bash 3.2 awk a 0 2 abcef 123dgag 對於awk a 3 需要了解3個知識點 1 awk陣列知識,不說了 2 awk的基本命令格式 aw...