sed: -e expressão # 1, char 44: regex de endereço não terminado

0

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?

    
por somethingSomething 29.08.2018 / 08:06

2 respostas

3

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.
por 29.08.2018 / 08:15
0

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
    
por 30.08.2018 / 11:38

Tags