Clasificación compleja y salida por valores en jq

Resuelto amkgi asked hace 10 meses • 3 respuestas

Estoy intentando obtener una representación legible por humanos de los hermanos de subprocesos.

Tengo el siguiente resultado: resultado .

undercloud) [stack@undercloud ~]$ os baremetal introspection data save compute0 |jq '.numa_topology.cpus[] | select(.numa_node == 0) | .thread_siblings'
[
  11,
  51
]
[
  9,
  49
]
[
  58,
  18
],

....
...
..
.

(undercloud) [stack@undercloud ~]$

Vista común: Vista común.

(undercloud) [stack@undercloud ~]$ os baremetal introspection data save compute0 | jq '.numa_topology.cpus'
[
  {
    "thread_siblings": [
      11,
      51
    ],
    "cpu": 11,
    "numa_node": 0
  },
  {
    "thread_siblings": [
      9,
      49
    ],
    "cpu": 9,
    "numa_node": 0
  },
  {
    "thread_siblings": [
      58,
      18
    ],
    "cpu": 18,
    "numa_node": 0
  },
....
...
..
.
(undercloud) [stack@undercloud ~]$

Quiero obtener el siguiente resultado:

0, 1, 2, 3, 4, ... etc
40 41 42 43 44 ... etc

¿Es posible obtener dicha lista usando jq? Quizás con awk/sedprocesamiento posterior.

PD: JSON se movió a Pastebin porque el motor Stackoverflow cree que mi publicación tiene pocos detalles y mucho código, pero creo que hice una pregunta bastante específica y no cae en el problema XY.

amkgi avatar Feb 16 '24 02:02 amkgi
Aceptado

Estás buscando algo como esto:

.numa_topology.cpus | map(
  select(.numa_node == 0) .thread_siblings | sort
) | sort | transpose[] | @csv
oguz ismail avatar Feb 15 '2024 20:02 oguz ismail

Aquí hay un enfoque que ordena cada .thread_siblingsmatriz, y luego la matriz de todas las matrices hermanas, la transpone para obtener todos los primeros números en una matriz y todos los últimos en otra, y une ambos con una cadena adhesiva:

jq -r '
  [.numa_topology.cpus[] | select(.numa_node == 0).thread_siblings | sort]
  | sort | transpose[] | join(", ")
'
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59

Manifestación

pmf avatar Feb 15 '2024 20:02 pmf