Estou tentando carregar um arquivo JSON usando jq
por aqui . É bastante simples e funciona:
$ cat ~/Downloads/json.txt | jq '.name'
"web"
No entanto, preciso atribuir a saída dessa variável a um comando. Eu tentei fazer isso e isso funciona:
$ my_json=`cat ~/Downloads/json.txt | jq '.name'`
$ myfile=~/Downloads/$my_json.txt
$ echo $myfile
/home/qut/Downloads/"web".txt
Mas eu quero /home/qut/Downloads/web.txt
.
Como removo as aspas, ou seja, mudo "web"
para web
?
command-line
text-processing
json
edesz
fonte
fonte
tr
comando ... Eu olhei através de 4 posts diferentes com centenas de votos positivos com pessoas escrevendo mais de 40 caracteres mega-one-liners para fazer o trabalho. Você tem a solução correta (e provavelmente moderna).No caso específico de
jq
, você pode especificar que a saída deve estar no formato bruto :Para ilustrar usando o
json.txt
arquivo de amostra do seu link :enquanto que
fonte
Você poderia usar
eval echo
assim:mas isso não é o ideal - poderia facilmente causar bugs e / ou falhas de segurança.
fonte
É mais simples e eficiente, usando o recurso nativo de remoção de prefixo / sufixo do shell:
Fonte /programming/9733338/shell-script-remove-first-and-last-quote-from-a-variable
fonte