2017-07-14 2 views
0

Hier ist ein Ausschnitt der Ausgabe, wenn ich eine grundlegende jq, was ich bekommen möchte, ist die Daten der Partitionen.Anfänger Parsing mit jq - Array kann nicht mit String indexieren

jq . 



[ 
{ 
"partitions": [ 
    "[email protected] 
], 
"os_pid": "20458", 
"fd_used": 20, 
"fd_total": 1024, 
"sockets_used": 2, 
"sockets_total": 829, 
"mem_used": 41128152, 

Wenn ich jq‘.partitions' ich Kann nicht Index-Array mit String "Partitionen" - Irgendwelche Gedanken darüber, warum das passiert?

Antwort

2

Sie haben ein Array, in dem jedes Element ein Feld partitions hat. Sie fragen nach "Partitionen", aber Sie sagen nicht, von welchem ​​Element oder Elementen im Array.

Hier ist eine komplette, eigenständige Datei:

[ 
    { 
    "partitions": [ "[email protected]" ] 
    }, 
    { 
    "partitions": [ "more" ] 
    } 
] 

Ihr Ausdruck erzeugt den Fehler, den Sie sagen:

$ jq '.partitions' file 
jq: error (at file:8): Cannot index array with string "partitions" 

Sie können "Partitionen" für das erste Element erhalten:

$ jq '.[0].partitions' file 
[ 
    "[email protected]" 
] 

Oder für jedes Element:

Oder schließen Sie alle Partitionen von jedem Element in einer Liste:

$ jq 'map(.partitions) | add' file 
[ 
    "[email protected]", 
    "more" 
]