Sed pacman.conf удалить # для мультибиблиотеки и включить

На самом деле я столкнулся со стеной со своим пользовательским сценарием установки.

В какой-то момент сценария мне нужно включить 64-битный репозиторий для 64-битных машин и (например) мне нужно получить из этого формата:

#multilib-testing[...]
#include[...]

#multilib[...]
#include[...]

В этот формат

#multilib-testing[...]
#include[...]

multilib[...]
include[...]

Но, как вы можете видеть, включение есть везде, и я не могу использовать sed, потому что он рекурсивно удалит все «включения» этого конкретного файла, а это не то, что я хочу...

Я не могу найти решение с sed. Я попробовал кое-что, что видел в другой ветке, с

cat /etc/pacman.conf | grep -A 1 "multilib"

Но у меня не получилось, и у меня нет вариантов...

В идеале я хотел бы получить решение sed (но не стесняйтесь рассказывать мне, какие другие варианты я мог бы получить, если вы объясните!).

Шаблон (и начало) должен быть примерно таким:

sed -i '/multilib/ s/#//' /etc/pacman.conf

И должен быть эффективен для шаблона и строки после (которая является включенной).

Кроме того, я был бы рад, если бы вы могли на самом деле научить меня, почему вы делаете то или это, пока я учусь, и я не могу что-то вспомнить, если я не могу понять, почему я так поступил. (также извините мой английский в середине игры).


person Amin NAIRI    schedule 29.12.2015    source источник
comment
но при чем здесь закономерность? раскомментируйте те строки, которые следуют за multilib, и оставьте те, у которых есть multilib-testing?   -  person fedorqui 'SO stop harming'    schedule 29.12.2015
comment
О, вы правы, я уточню свой вопрос...   -  person Amin NAIRI    schedule 29.12.2015


Ответы (1)


Мы можем использовать это для сопоставления диапазона по шаблонам. Затем мы можем сопоставить # в начале каждой строки и удалить его.

sed -i "/\[multilib\]/,/Include/"'s/^#//' /etc/pacman.conf
person Evan Graham    schedule 29.12.2015