我有一个文件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
用于约定)