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

Исходное сообщение
"Как в SED обработать диапазон строк?"

Отправлено xintrea , 22-Янв-21 12:24 
Есть такой текст:

...
[AC]
icon=battery-charging

[AC][DPMSControl]
idleTime=3600

[AC][HandleButtonEvents]
lidAction=64
powerButtonAction=8

[Battery]
icon=battery-060

[Battery][DPMSControl]
idleTime=300

[Battery][HandleButtonEvents]
lidAction=64
powerButtonAction=16

[LowBattery]
icon=battery-low

[LowBattery][BrightnessControl]
value=30

[LowBattery][HandleButtonEvents]
lidAction=64
powerButtonAction=16
...


Я хочу обработать диапазон строк между:

[AC][HandleButtonEvents]
...
[.*

В этом диапазоне надо изменить значение powerButtonActions.

Я пытаюсь сделать так:


cat f.txt | sed /\[AC\]\[HandleButtonEvents\]/,/\[.*/s/powerButtonAction\s*=\s*.*/powerButtonAction=125/

Но получаю ошибку:

> sed: -e выражение #1, символ 81: незавершенное адресное регулярное выражение

Вопрос: как правильно написать эту команду?


Содержание

Сообщения в этом обсуждении
"Как в SED обработать диапазон строк?"
Отправлено xintrea , 22-Янв-21 15:11 
В общем, подошло такое решение:


sed -r '/\[AC\]\[HandleButtonEvents\]/,/^\[.*/s/(powerButtonAction=).+/\1125/'


"Как в SED обработать диапазон строк?"
Отправлено xintrea , 22-Янв-21 15:11 
-