¿Cómo eliminar comillas dobles en la salida jq para analizar archivos json en bash?

Resuelto Chris F asked hace 7 años • 2 respuestas

Estoy usando jq para analizar un archivo JSON como se muestra aquí . Sin embargo, los resultados de los valores de cadena contienen "comillas dobles" como se esperaba, como se muestra a continuación:

$ cat json.txt | jq '.name'
"Google"

¿Cómo puedo canalizar esto a otro comando para eliminar ""? entonces lo entiendo

$ cat json.txt | jq '.name' | some_other_command
Google

¿ Qué some_other_commandpuedo usar?

Chris F avatar Jun 20 '17 21:06 Chris F
Aceptado

Utilice la opción -r(o --raw-output) para emitir cadenas sin formato como salida:

jq -r '.name' <json.txt
Charles Duffy avatar Jun 20 '2017 14:06 Charles Duffy

Entonces, para un archivo que contiene justo {"name": "Google"}entonces sí

sample='{"name":"Google"}'
echo $sample| jq '.name'

"Google"

usando --raw-outputayudas

echo $sample| jq --raw-output '.name'

Google

Pero me topé con esta pregunta porque estaba usando --raw-outputuna matriz json como esta

sample='[{"name":"Yahoo"},{"name":"Google"}]'
echo $sample | jq --raw-output 'map(.name)'

[
  "Yahoo",
  "Google"
]

Y no entendí por qué quedaron las comillas. Me encontré con esta publicación y ahora sé que agregar | .[]funciona.

echo $sample | jq --raw-output 'map(.name)| .[]'

Yahoo
Google
HeyWatchThis avatar Sep 23 '2022 16:09 HeyWatchThis