LINUX.ORG.RU

Perl: Удаление строк из файла


0

1

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

Например:
1 файл:
"...Князь Василий не обдумывал своих планов. Он <еще менее> думал сделать людям зло для того, чтобы приобрести выгоду..."

2 файл:
<еще менее>

На выходе:

"...Князь Василий не обдумывал своих планов. Он думал сделать людям зло для того, чтобы приобрести выгоду..."

т.е. нужно удалить фрагмент из строки
Как это реализовать??


первая ссылка в гугле

#!/usr/bin/env perl -w
# usage: script.pl words text >newfile
use English;

# poor man's argument handler
open(WORDS, shift @ARGV) || die "failed to open words file: $!";
open(REPLACE, shift @ARGV) || die "failed to open replacement file: $!";

my @words;

while ($_=<WORDS>) { 
  chop; # strip eol
  push @words, split; 
}

@words=sort { length($b) <=> length($a) } @words;

undef $RS;
$text = <REPLACE>;

foreach $word (@words) { 
     $text =~ s/\b\Q$word\E\s?//sg;
}

print $text;
xspirit
()
Ответ на: первая ссылка в гугле от xspirit

Тут будут удалены отдельные слова,а ТС нужно чтобы удалялись все подстроки которые строки в файле 2.

OxiD ★★★★
()

sed -e «s-^-s/-» -e 's-$-//g-' < words_to_delete > a.sed && sed -f a.sed text_to_clean

Словосочетания/слова по одному в каждой строке

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.