Tente isso,
sed -i '/deb cdrom:\[Debian GNU\/Linux 9\.4\.0 _S/s/^/#/' /etc/apt/sources.list
- precisamos escapar do
[
,/
e.
no padrão de pesquisa,/
porque é o delimitador e[
e.
porque são operadores regexp.
PROBLEMA:
Estou escrevendo um script para configurar o Debian ..... Preciso comentar a linha em sources.list para o DVD, estou tentando usar o sed, sei como deletar a linha ou linhas mas quero comentar em vez disso.
O que eu tenho é isso:
sed -i '/deb cdrom:[Debian GNU/Linux 9.4.0 _S/s/^/#/' /etc/apt/sources.list
mas apresenta este erro:
sed: -e expression #1, char 44: unterminated address regex
Suponho que é o suporte que é o problema.
PERGUNTA:
Qual é o problema aqui e como você conserta o comando e / ou há alguma outra maneira de fazer isso?
Como a string de pesquisa é uma constante, com a presença de metacaracteres de regex sendo os irritantes, você também pode fazer da seguinte maneira:
awk -i inplace 'index($0, "deb cdrom:[Debian GNU/Linux 9.4.0 _S"){$0 = "#" $0}1' /etc/apt/sources.list
Você está com sorte se tiver acesso ao GNU awk 4.1.0
ou acima para o efeito de edição no local. OTW, você pode fazer com Perl
:
perl -pi -e 's/^/#/ if index($_, "deb cdrom:[Debian GNU/Linux 9.4.0 _S") + 1' /etc/apt/sources.list
Tags sed