Como escapar de colchetes não balanceados ou slash em sed?

0

Estou tentando usar sed , mas meu padrão contém [] colchetes e barras ( / ).

Eu tentei citações, mas isso não ajuda.

Como posso escapar disso?

Exemplos:

$ sed -i'.bak' "s/^includes[] =/;includes[] =/g" *.make
sed: 1: "s/^includes[] =/;includ ...": unterminated substitute in regular expression
$ sed -i'.bak' 's/^includes[] = includes/;includes/g' *.make
sed: 1: "s@^includes[] = i ...": unbalanced brackets ([])
$ sed -i'.bak' 's/^includes[] = foo/includes//;includes[] = foo/includes//g' *.make
sed: 1: "s/^includes[] = foo/inc ...": bad flag in substitute command: '/'
    
por kenorb 05.11.2014 / 00:32

1 resposta

3

Para escapar de barras, você pode usar qualquer caractere que não seja uma barra para separar as expressões regulares.

Por exemplo ( foo1/ - > foo2/ ):

sed "s@foo1/@foo2/@"
sed "s|foo1/|foo2/|"

Para escapar de colchetes (este trabalho também para barras) você precisa colocar um caractere de barra invertida antes que o caractere delimitador faça com que o caractere seja tratado literalmente.

Por exemplo ( foo[] = - > ;foo[] = ):

sed "s/foo\[\] =/;foo\[\] =/"

Leia mais executando man sed ( Sed Regular Expressions ).

    
por 05.11.2014 / 00:32