GNU/Linux >> Tutoriales Linux >  >> Linux

¿Analizar un campo de una matriz Json en una matriz Bash?

Tengo una salida JSON que contiene una lista de objetos almacenados en una variable. (Puede que no esté expresando bien)

[
  {
    "item1": "value1",
    "item2": "value2",
    "sub items": [
      {
        "subitem": "subvalue"
      }
    ]
  },
  {
    "item1": "value1_2",
    "item2": "value2_2",
    "sub items_2": [
      {
        "subitem_2": "subvalue_2"
      }
    ]
  }
]

Necesito todos los valores para item2 en una matriz para ejecutar un script bash en ubuntu 14.04.1.

He encontrado varias formas de obtener el resultado completo en una matriz, pero no solo los elementos que necesito

Respuesta aceptada:

Usando jq :

$ cat json
[
  {
    "item1": "value1",
    "item2": "value2",
    "sub items": [
      {
        "subitem": "subvalue"
      }
    ]
  },
  {
    "item1": "value1_2",
    "item2": "value2_2",
    "sub items_2": [
      {
        "subitem_2": "subvalue_2"
      }
    ]
  }
]

CÓDIGO:

arr=( $(jq -r '.[].item2' json) )
printf '%sn' "${arr[@]}"

SALIDA:

value2
value2_2

Linux
  1. ¿Cómo crear una matriz de elementos únicos a partir de una cadena/matriz en Bash?

  2. Migrar de Parse a Rackspace

  3. Matriz en Bash no encontrada

  4. ¿Cómo analizar un archivo CSV en Bash?

  5. iniciando apachectl desde bash

Bash break:cómo salir de un bucle

Arreglos bash

Matriz asociativa en Bash

Convierta una cadena de texto en bash en una matriz

Usando jq para obtener el valor clave de la salida json

bash:devuelve una matriz desde la función y muestra el contenido