Perl 单行代码替换代码块

Perl 单行代码替换代码块

我有一个文件foo.txt

hello world
      first line to change
        second line to change

我想写一个 perl 单行代码,将其更改foo.txt为读取

hello world
      this is
        my new text

我试过

perl -p -i -e 's/      first line to change\n        second line to change/      this is\n        my new text/g' foo.txt

但这个脚本对文件没有任何作用。我的单线有什么问题吗?

答案1

默认情况下,perl一次读取一行输入,因此您的正则表达式永远不会匹配。要使用多行输入,您有两种选择。

启用段落模式:

perl -i.bak -00pe ...

或者吞掉整个文件:

perl -i.bak -0777pe ...

(上面的任何值-0400都会导致perl整个文件被占用,-0777用于约定)

相关内容