使用perl改变多行表达式

使用perl改变多行表达式

我有一个文件,其中包含

...

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模式,以便它读取整个文件。然后替代命令进行所需的更改。

相关内容