本文介绍了如何使用 Perl 跨多行搜索和替换?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

$ perl --version
This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi

$ echo -e "foo
bar" > baz.txt
$ perl -p -e 's/foo
bar/FOO
BAR/m' baz.txt
foo
bar

我怎样才能让这个替代品发挥作用?

How can I get this replacement to work?

推荐答案

您可以使用 -0 开关来更改输入分隔符:

You can use the -0 switch to change the input separator:

perl -0777pe 's/foo
bar/FOO
BAR/' baz.txt

-0777 将分隔符设置为 undef-0 单独将其设置为 这可能会起作用用于不包含空字节的文本文件.

-0777 sets the separator to undef, -0 alone sets it to which might work for text files not containing the null byte.

注意 /m 是不必要的,因为正则表达式不包含 ^ 也不包含 $.

Note that /m is needless as the regex does not contain ^ nor $.

这篇关于如何使用 Perl 跨多行搜索和替换?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 17:29