как отредактировать строку с IPv4-адресом с помощью команды sed - PullRequest
1 голос
/ 09 июля 2020

Мне нужно изменить файл конфигурации ntp, добавив некоторые параметры в строку, содержащую IP-адреса. Я так долго пробовал это с помощью команды sed, но не могу изменить строку, если я не знаю IP-адреса. Скажем, у меня есть несколько строк, например server 172.0.0.1 server 10.0.0.1

Мне нужно добавить параметр iburst после IP-адреса. Я пробовал такую ​​команду, как .. sed -e 's/(\d{1,3}\.\d{1.3}\.\d{1,3}\.\d{1,3})/ \1 iburst/g' ntp_file или sed -e 's/^server +\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/server \1\.\2\.\3\ iburst/g' ntp_file, но не изменял строку. Любые предложения будут действительно приняты.

1 Ответ

2 голосов
/ 09 июля 2020

Регулярное выражение, которое вы использовали как POSIX BRE, не может соответствовать ожидаемым строкам из-за \d сокращенного класса, который не поддерживает sed, неправильно использованной точки внутри квантификатора диапазона и неправильного экранирования группирования и разделителей квантификатора диапазона.

Вы можете использовать

sed -E -i 's/[0-9]{1,3}(\.[0-9]{1,3}){3}/ & iburst/g' ntp_file

Выражение POSIX ERE (включено с параметром -E) означает соответствие

  • [0-9]{1,3} - от одной до трех цифр
  • (\.[0-9]{1,3}){3} - три вхождения точки и от одной до трех цифр

Шаблон замены - & iburst, где & означает полное совпадение.

g флаг заменяет все вхождения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...