Como usar! no comando sed?

3

Peça desculpas se você achar esta questão muito básica. De qualquer forma, estou digitando sed '/[iI]t/ a\ Found it!' data , mas diz que o evento de erro não foi encontrado.

Eu tentei escapar desse ! com barra invertida \! , mas não funciona.

Eu não entendo quando barra invertida \ pode escapar de um personagem e usá-lo literalmente, então por que ele não funciona em sed?

    
por Anonymous 20.07.2016 / 23:52

1 resposta

3

Em que sistema operacional você experimentou? No HP-UX 8.11 csh existem 2 maneiras de cancelar o significado especial do ponto de exclamação para substituições de histórico (veja Substituições do histórico em man csh).

  1. Coloque espaço depois! (alguns outros personagens também trabalham)

    sed '/[iI]t/ a\
    Found it! ' data
    
  2. Escape via \!

    sed '/[iI]t/ a\
    Found it\!' data
    

    Isso também funciona com aspas duplas:

    sed "/[iI]t/ a\
    Found it\!" data
    
por 06.02.2017 / 23:09