使用Perl删除多行正则表达式

时间:2018-06-11 08:21:12

标签: perl

我想删除一行设置属性last-lrm-refresh(通常是一组设置中的最后一行),其中输入看起来像像这样:

dc-version=1.1.16-94ff4df \
cluster-infrastructure=corosync \
maintenance-mode=false \
last-lrm-refresh=1523005561

以下不起作用。我究竟做错了什么?我安装了Perl v5.20.2。

perl -pe 's/ \\\n[ \t]+last-lrm-refresh=[0-9]+//smg' < in.out > out.txt

1 个答案:

答案 0 :(得分:3)

您正在读取一行,其中一行被定义为以换行符结尾的字符数,因此\n[ \t]可能无法匹配。您可以通过将行的定义更改为整个文件(-0777)来解决此问题。

perl -0777pe 's/ \\\n[ \t]+last-lrm-refresh=[0-9]+//' in.txt > out.txt