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"}
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.