Удалить конец строки с определенным текстом или словом в скрипте Perl

#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