URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10477
[ Назад ]

Исходное сообщение
"Подскажите по замене строки с помощью sed"

Отправлено danswano , 04-Июл-24 14:44 
Всем привет!
Когда я пытаюсь в куче конфигов заменить часть IP-адреса, то пишу команду
sed -i '/s/192.168.0/10.55.200/g'
Проблема в том, что в конфиге dhcpd есть настройки отдачи таблицы маршрутизации вида
24,172,21,0,192,168,0,254
Такие строки в результате выполнения sed заменяются на
24,172,21,0,10.55.200,254
Вопрос: как правильно написать выражение для sed, чтобы он корректно обработал эти строки или просто пропустил их? Запятая в качестве разделителя встречается только в конфиге dhcpd, если я правильно помню...

Содержание

Сообщения в этом обсуждении
"Подскажите по замене строки с помощью sed"
Отправлено pavel_simple. , 04-Июл-24 14:53 
>[оверквотинг удален]
> Когда я пытаюсь в куче конфигов заменить часть IP-адреса, то пишу команду
> sed -i '/s/192.168.0/10.55.200/g'
> Проблема в том, что в конфиге dhcpd есть настройки отдачи таблицы маршрутизации
> вида
> 24,172,21,0,192,168,0,254
> Такие строки в результате выполнения sed заменяются на
> 24,172,21,0,10.55.200,254
> Вопрос: как правильно написать выражение для sed, чтобы он корректно обработал эти
> строки или просто пропустил их? Запятая в качестве разделителя встречается только
> в конфиге dhcpd, если я правильно помню...

man regex, экранируй точку, а то назаменяешь себе на голову


"Подскажите по замене строки с помощью sed"
Отправлено Pahanivo пробегал , 04-Июл-24 21:35 
> man regex, экранируй точку, а то назаменяешь себе на голову

man regex до просветления - точка метасимвол


"Подскажите по замене строки с помощью sed"
Отправлено pavel_simple. , 05-Июл-24 09:10 
>> man regex, экранируй точку, а то назаменяешь себе на голову
> man regex до просветления - точка метасимвол

echo 123,123,123 | sed 's/123.123.123/true/g'
true


"Подскажите по замене строки с помощью sed"
Отправлено pavel_simple. , 05-Июл-24 09:11 
>> man regex, экранируй точку, а то назаменяешь себе на голову
> man regex до просветления - точка метасимвол

echo 123,123,123 | sed 's/123\.123\.123/true/g'
123,123,123


"Подскажите по замене строки с помощью sed"
Отправлено anonymous , 05-Июл-24 17:42 
>[оверквотинг удален]
> Когда я пытаюсь в куче конфигов заменить часть IP-адреса, то пишу команду
> sed -i '/s/192.168.0/10.55.200/g'
> Проблема в том, что в конфиге dhcpd есть настройки отдачи таблицы маршрутизации
> вида
> 24,172,21,0,192,168,0,254
> Такие строки в результате выполнения sed заменяются на
> 24,172,21,0,10.55.200,254
> Вопрос: как правильно написать выражение для sed, чтобы он корректно обработал эти
> строки или просто пропустил их? Запятая в качестве разделителя встречается только
> в конфиге dhcpd, если я правильно помню...

попробуй через логическое нет 192\.168\.0(?!\.254)
регулярки удобно тренить на regex101.com, а файлы править в vscode


"Подскажите по замене строки с помощью sed"
Отправлено danswano , 08-Июл-24 14:37 
Всем спасибо, экранирование точек помогло: /s/192\.168\.0/10\.55\.200/g