Perl скрипт — удаление одинаковых строк в файле

Мой почтовый релей уже почти готов, и думаю, что завтра я наконец-то смогу запустить его и у меня будет чуть больше времени на другие проекты. А пока, скрипт для удаления одинаковых строк в файле:

#!/usr/bin/perl -w
use strict;
my $origfile = shift;
my $outfile = "no_dupes_" . $origfile;
my %hTmp;
open (IN, "<$origfile") or die "Couldn't open input file: $!";
open (OUT, ">$outfile") or die "Couldn't open output file: $!";
while (my $sLine = <IN>) {
next if $sLine =~ m/^\s*$/; #remove empty lines
#Without the above, still destroys empty lines except for the first one.
print OUT $sLine unless ($hTmp{$sLine}++);
}
close OUT;
close IN;

Если сохранить данный скрипт в файле script.pl, то запускаем мы его:

perl script.pl <имя обрабатываемого файла

0 thoughts on “Perl скрипт — удаление одинаковых строк в файле

    • Команда такая есть, и то что вы говорите, в принципе отлично работает, правда не так как это делает скрипт. Просто не всегда нужна сортировка, и вот в этом сучаи, ваш «макрос» не подойдет. Да есть много других способов, но мне в свое время был интересен именно перловый.
      Да, и как пример, можно использовать вот такой макрос — cat -n $file|sort -k2,2 -u |sort -k1,1 -n|awk ‘ { $1=»»; gsub(«^ «,»»); print $0 } ‘ > $no_duplicates

Leave a Reply

Ваш адрес email не будет опубликован.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>