O que há de errado com este comando sed?

3

Este comando é executado corretamente:

$ sed  -e '/foo/{g; d}' myfile   

Mas este tem um erro:

$ sed  -e '/foo/{g; a bar}' myfile
sed: -e expression #1, char 0: unmatched '{'

O que há de errado com isso?

    
por Qiang Li 31.12.2011 / 04:44

1 resposta

8

A instrução a em sed requer um caractere de nova linha real ( Cntl-j ), não um retorno de carro incorporado ( Ctrl-m ). Portanto, a única maneira de realmente obter a instrução a para funcionar é:

sed '/foo/{g;a\
bar
}'

Você precisa ter a nova linha após a linha de entrada. Se você quiser mais de uma linha, cite a nova linha:

sed '/foo/{g;a\
bar\
xyzzy
}'

Isso volta às raízes de sed , que é ed .

    
por 31.12.2011 / 06:56

Tags