The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Как в SED обработать диапазон строк?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Как в SED обработать диапазон строк?"  +/
Сообщение от xintrea (ok), 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: незавершенное адресное регулярное выражение

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Как в SED обработать диапазон строк?"  +/
Сообщение от xintrea (ok), 22-Янв-21, 15:11 
В общем, подошло такое решение:


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

Ответить | Правка | Наверх | Cообщить модератору

2. "Как в SED обработать диапазон строк?"  +/
Сообщение от xintrea (ok), 22-Янв-21, 15:11 
-
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру