#regex #perl
Вопрос:
Я хочу удалить строку из текстового файла, содержащего только слово или букву «com -«, т. е. эта строка заканчивается на com — для удаления Приведенный ниже скрипт удаляет только com — Не могли бы вы помочь?
open my $input, '<', 'inputfile.txt' or die "$!";
open my $out, '>', 'output.txt' or die $!;
while (<$input>){
chomp;
s/com-//g;
print $out "$_n";
}
close($input);
close($out);
Мой inputfile.txt
10.22.10.12 com-sys28598001
10.21.19.2 com-
10.21.23.3 com-
3.8.3.13 com-
10.22.51.11 com-sys28019338
10.22.7.13 com-
10.22.64.3 com-sts28553063
10.24.18.21 com-sts29290004
10.24.14.24 com-sys24887111
желание output.txt
10.22.10.12 com-sys28598001
10.22.51.11 com-sys28019338
10.22.64.3 com-sts28553063
Ответ №1:
Просто выведите строки, которые не заканчиваются com-
.
while (<$input>){
chomp;
print $out "$_n" unless /com-$/;
}
/com-$/
совпадает только тогда, когда строка заканчивается на com-
.
Один лайнер
cat inputfile.txt | perl -e "while(<>) { print unless /com-$/}"
Или
perl -ne "print unless /com-$/" < inputfile.txt