Sed pacman.conf премахва # за multilib & включва

Всъщност съм изправен пред стена с моя персонализиран инсталационен скрипт.

В даден момент от скрипта трябва да активирам 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