![使用perl改变多行表达式](https://linux22.com/image/102120/%E4%BD%BF%E7%94%A8perl%E6%94%B9%E5%8F%98%E5%A4%9A%E8%A1%8C%E8%A1%A8%E8%BE%BE%E5%BC%8F.png)
我有一个文件,其中包含
...
CNN
111
XXX
ABC
111
XXX
ABC
111
BBC
...
我需要将 111 更改为 999,但仅作为 ABC\n111\nXXX 的一部分
...
CNN
111
XXX
ABC
999
XXX
ABC
111
BBC
...
我已经尝试过了,但它到处都改变了“111”。
perl -i -pe '/ABC\n111\nXXX/ if s/111/999/g' FILE
注意:我们需要比较多行,因为“111”可能出现在许多其他地方。文件大小为227kb。
答案1
perl -0777 -i -p -e 's/ABC\n111\nXXX/ABC\n999\nXXX/g;' file
-0777 将 perl 置于slurp
模式,以便它读取整个文件。然后替代命令进行所需的更改。