juffinhalli
@juffinhalli

[РЕШЕНО] Linux sed разделение регулярных выражений

Привет, Хабражители!
Раньше sed всегда корректно отрабатывал несколько регулярных выражений разделённых символом точка-с-запятой ";". Это позволяло запускать sed только один раз для отработки множества регулярных выражений.
Например комментировать строки содержащие «bugcode» и «betacode»
sed -i '/bugcode/s/^/\#/; /betacode/s/^/\#/' /etc/file
Но сегодня обнаружил что это работает не всегда
Например нужно добавить строку «Ivan» после строки содержащей «123» и добавить строку «John» после строки содержащей «456».
sed -i '/123/a Ivan; /456/a John' /etc/file
В итоге втрое регулярное выражение игнорируется и вставляется как текст.
По отдельности регулярные выражения срабатывают корректно.
Прошу подсказать куда копать, Гугл не помог.
Заранее спасибо за помощь
  • Вопрос задан
  • 4436 просмотров
Решения вопроса 1
sledopit
@sledopit
Если я всё правильно помню, это такая особенность команды a (а также i и c).
Чтобы не вызывать по сто раз sed можно сделать вот так:
echo -e "123\n456" | sed -e '/123/a Ivan' -e '/456/a John'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Wanted. Санкт-Петербург
До 450 000 ₽
Wanted. Санкт-Петербург
До 100 000 ₽
Wanted. Санкт-Петербург
До 120 000 ₽