Como faço para escapar aspas para conversão json no Bash

0

Eu tenho um arquivo que eu preciso converter em uma string json e isso precisa ser feito via bash .

Meu arquivo de teste parece

1
2
'
3
4

Aqui está o que está acontecendo

$ LOG=$(cat file)
$ printf '{"log": "%q"}\n' "$LOG"
{"log": "$'1\n2\n\'\n3\n4'"}

As coisas parecem boas, como se manejasse as novas linhas e o ' , mas adicionava $' no início e ' no final.

    
por Mike 06.12.2014 / 11:31

1 resposta

1

O mais simples é usar três printf consecutivas, a principal com %s em vez de %q :

$ printf '{"log": "'; printf '%s\n' $(<file); printf '"}\n'
{"log": "1\n2\n'\n3\n4\n"}
    
por 06.12.2014 / 13:09