perl:打印以控制台所有匹配的模式

时间:2019-04-25 12:19:49

标签: perl

我有多行

QQQQl123

hsdhjhksd

QQQQl234

ajkdkjsdh

QQQQl564

我要打印所有匹配的QQQQl [0-9] +

喜欢

QQQQl123 
QQQQl234 
QQQQl564

如何使用perl做到这一点

我尝试过:

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

什么也没显示

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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自动打印每一行,所以您很少可以做到)。