ПРОБЛЕМА:
Я пишу скрипт для настройки установок Debian ….. Мне нужно закомментировать строку в sources.list для DVD, я пытаюсь использовать sed, я знаю, как удалить строку или строки, но хочу вместо этого закомментировать.
Что у меня есть это:
sed -i '/deb cdrom:[Debian GNU/Linux 9.4.0 _S/s/^/#/' /etc/apt/sources.list
но это дает эту ошибку:
sed: -e expression #1, char 44: unterminated address regex
Я предполагаю, что проблема заключается в кронштейне.
ВОПРОС:
В чем здесь проблема, и как вы исправляете команду и / или есть ли другой способ сделать это?
Попробуй это,
sed -i '/deb cdrom:\[Debian GNU\/Linux 9\.4\.0 _S/s/^/#/' /etc/apt/sources.list
[
, /
и .
в шаблоне поиска, /
потому что это разделитель, и [
и .
потому что они являются операторами регулярных выражений. Поскольку строка поиска является константой, а наличие метасимволов регулярных выражений является раздражителем, вы также можете сделать это следующим образом:
awk -i inplace 'index($0, "deb cdrom:[Debian GNU/Linux 9.4.0 _S"){$0 = "#" $0}1' /etc/apt/sources.list
Вам повезло, если у вас есть доступ к GNU awk 4.1.0
или выше для эффекта редактирования на месте. OTW, вы можете сделать с Perl
:
perl -pi -e 's/^/#/ if index($_, "deb cdrom:[Debian GNU/Linux 9.4.0 _S") + 1' /etc/apt/sources.list