sed mac adicionar texto à linha específica com aspas duplas

0

Estou tentando usar isso como meu guia inicial para usar o sed para adicionar uma linha a um arquivo no OSX. link

sed -i '.json' '2i\
this is a test place
    ' dummy.txt

Os trabalhos acima. Mas eu preciso fazer expansão, então estou começando com algo simples, apenas substituindo por aspas duplas como

sed -i '.json' "2i\
this is a test place
    " dummy.txt

Por que recebo command i expects \ followed by text ? Ou como usar aspas duplas no Mac para adicionar texto a uma linha específica?

    
por Crystal 25.10.2018 / 21:04

1 resposta

3
$ sed "2i\
These are words on\
multiple lines\
" input
1
These are words on
multiple lines
2
3
4
5
6
7
8
9
10

Você precisa escapar da barra invertida para que sed consiga analisá-la e escapar do feed de linha literal que você está tentando escapar para sed em vez do shell.

$ sed '2i\
thing' input

Com as citações strongs, tudo é passado literalmente, por isso sed<2> <i> <literal linefeed>

$ sed "2i\
thing" input

Com aspas fracas, o shell obtém os primeiros dibs na análise da string e, portanto, sed<2> <i> <linefeed> , que é um erro de sintaxe.

    
por 25.10.2018 / 21:13

Tags