gpt4 book ai didi

regex - 匹配多行并在Perl正则表达式中打印

转载 作者:行者123 更新时间:2023-12-02 09:33:45 24 4
gpt4 key购买 nike

我想匹配多行正则表达式,只打印匹配的行:

$ cat test.txt
line1
line2
line3
$ perl -ne 'print if /line2.line3/s' test.txt
$

此正则表达式实际上与 line2\nline3匹配,但未打印。 regex101 verifies匹配。

使用命令开关 0777会打印匹配的行,但随后也会打印不匹配的行:
$ perl -0777 -ne 'print if /line2.line3/s' test.txt
line1
line2
line3

在替换正则表达式中使用 0777可以按预期工作:
$ perl -0777 -pe 's/line2.line3/replaced/s' test.txt
line1
replaced

我想了解是否可以仅打印与多行正则表达式匹配的行?

最佳答案

不带参数的print打印$_。如果使用-0777,则将整个文件读入$_,因此,如果存在匹配项,则可以打印整个文件。如果只想显示匹配的部分,则可以使用

 perl -0777 -ne 'print "$1\n" while /(line2.line3)/sg' test.txt

关于regex - 匹配多行并在Perl正则表达式中打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com