jq es una herramienta que permite manipular el JSON en la terminal.
Usaremos el siguiente JSON de ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| {
"name":"Foo Bar Baz",
"score": 4,
"color":"red",
"options":[
"red",
"green",
"blue"
],
"items": [
{"id": 0},
{"id": 1, "label": "foo"},
{"id": 2, "label": "bar"}
]
}
|
Recuperar
Imprimir un campo llamado name
:
1
2
| $ cat demo.json | jq -r '.name'
Foo Bar Baz
|
Imprimir todos los campos llamados label
dentro una lista:
1
2
3
4
| $ cat demo.json | jq -r '.items[].label'
null
foo
bar
|
Filtra
Ejemplos de como filtrar que el campo score
sea igual al valor 4
:
1
| $ cat demo.json | jq -r 'select(.score == 4)'
|
CSV
Lista las columnas name
y label
y convierte la salida en csv
.
1
2
| $ cat demo.json | jq -r '[.name, .score] | @csv'
"Foo Bar Baz",4
|
Minify
Es una técnica para hacerlo más compacto quitando de la estructura espacios, tabs, nuevas líneas sin modificar los datos:
1
2
| $ cat demo.json | jq -r tostring
{"name":"Foo Bar Baz","score":4,"color":"red","options":["red","green","blue"],"items":[{"id":0},{"id":1,"label":"foo"},{"id":2,"label":"bar"}]}
|