Невозможно изменить файл конфигурации с помощью sed, используя группы и несколько строк

Чтобы открыть Skype, выполните следующие действия:

$ sudo apt install snapd
$ sudo snap install skype --classic
# wget https://go.skype.com/skypeforlinux-64.deb
0
27.01.2020, 13:21
1 ответ

Sed — это строка -, основанная по умолчанию -, чтобы выполнить совпадение нескольких строк -, вам потребуется явно добавить строки в пространство шаблонов (с помощью команды N, например ).

Вместо этого вы можете сделать что-то вроде этого, которое по-прежнему основано на строке -, но делает шаг вперед, чтобы загрузить интересующую строку:

$ sed '/^\[Disable hibernate/{n;n;n;/^ResultActive/s/=no/=yes/;}' file.pkla
[Update already installed software]
Identity=unix-group:admin;unix-group:sudo
Action=org.debian.apt.upgrade-packages
ResultActive=yes

[Printer administration]
Identity=unix-group:lpadmin;unix-group:admin;unix-group:sudo
Action=org.opensuse.cupspkhelper.mechanism.*
ResultActive=yes

[Disable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

Обратите внимание, что, как и ваш оригинал, это будет работать только в том случае, если можно полагаться на порядок строк в блоке.

0
28.01.2020, 02:54

Теги

Похожие вопросы