Удалить многострочное регулярное выражение с помощью Perl - PullRequest
0 голосов
/ 11 июня 2018

Я хотел бы удалить строку, которая устанавливает атрибут 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 голосов
/ 11 июня 2018

Вы читаете строку в то время, когда строка определяется как число символов, заканчивающихся символом новой строки, поэтому \n[ \t] не может совпадать.Вы можете решить эту проблему, изменив определение строки на весь файл (-0777).

perl -0777pe 's/ \\\n[ \t]+last-lrm-refresh=[0-9]+//' in.txt > out.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...