Многострочный поиск с помощью sed - PullRequest
0 голосов
/ 08 февраля 2019

Мне нужно добавить несколько строк в файл конфигурации.Формат выглядит примерно так:

[Topic1]
param=foo
param=bar
param=foobar

[Topic2]
param=one
param=two

и т. Д.

Я пытаюсь написать сценарий, используя sed для добавления параметров к определенной теме.Поскольку во всех темах param=, я не могу просто вставить строку после последнего вхождения этой строки.Кроме того, я не могу рассчитывать на то, что значение последнего параметра является непротиворечивым, поэтому, например, я не могу просто вставить строку после строки param=two

. Любая помощь приветствуется.Я не слишком знаком с мутлиновым сед-фу.Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2019

sed -i -r ':a; N; $!ba; s/\[Topic1\]\n(param=[a-zA-Z]*\n)*/&param=VALUE\n/g' FILE_NAME

В основном :a; N; $!ba; добавляет всю строку, когда не последняя строка (N), к тегу, созданному :a, чтобы мы могли использовать \n в нашемexpression.

Затем сопоставьте [Topic1] с последующим произвольным номером param = xxx и добавьте param = VALUE в конец результата сопоставления (&).

...