Perl: вывести на консоль все подходящие шаблоны - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть несколько строк

QQQQl123

hsdhjhksd

QQQQl234

ajkdkjsdh

QQQQl564

Я хочу напечатать все соответствующие QQQQl [0-9] +

как

QQQQl123 
QQQQl234 
QQQQl564

как это сделать, используяperl

Я пытался:

$ perl -0777pe '/QQQQl[0-9]+/' filename

ничего не показывает

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

perl -we 'while(<>){ next unless $_=~/QQQQl[0-9]+/; print $_; }' < filename

0 голосов
/ 25 апреля 2019
perl -ne 'print if /QQQQl[0-9]+/' filename

Или, если по какой-то причине вы настаиваете на использовании -0777, вы можете сделать

perl -0777nE 'say for /QQQQl[0-9]+/g' filename

(или print "$_\n" вместо say)

Ваш код не работает, потому что /QQQQl[0-9]+/ возвращает true, потому что $_ действительно содержит этот шаблон, но вы никогда не просили Perl сделать что-либо на основе этого возвращаемого значения.

-n предпочтительнее -p в этом случае, поскольку вы не хотите печатать каждую строку, а только некоторые (-p автоматически печатает каждую строку, и вы очень мало можете с этим поделать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...