这是我的文件foo.txt
:
a
b
这就是我正在做的:
$ perl -pi -e 's/\nb/z/g' foo.txt
文件中没有任何变化,而我希望它变成:
az
为什么?这是 Perl v5.34.0。
最佳答案
第一次评估替换时,您匹配a␊
。第二次,对抗 b␊
。所以这两个时间都不匹配。
您想匹配整个文件。您可以使用 -g
或 -0777
告诉 Perl 在一行中考虑整个文件。
perl -i -gpe's/\nb/z/g' foo.txt # 5.36+
perl -i -0777pe's/\nb/z/g' foo.txt
关于regex - 为什么 Perl 正则表达式不匹配 "\n"和后面的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74010026/