Clasificación compleja y salida por valores en jq
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/sed
procesamiento 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.
Estás buscando algo como esto:
.numa_topology.cpus | map(
select(.numa_node == 0) .thread_siblings | sort
) | sort | transpose[] | @csv
Aquí hay un enfoque que ordena cada .thread_siblings
matriz, 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