2015-12-31 8 views
13

でないインデックス配列することができますJQ:私は(私は「MYFILE」と呼ぶであろう)ファイルに次のしている文字列を

[{ 
    "id": 123, 
    "name": "John", 
    "aux": [{ 
     "abc": "random", 
     "def": "I want this" 
    }], 
    "blah": 23.11 
}] 

次のように私は[]せずにそれを解析することができます

$ cat myfile | jq -r '.aux[] | .def' 
I want this 
$ 

が、[]で私が取得:

$ cat myfile | jq -r '.aux[] | .def' 
jq: error: Cannot index array with string 

[]をjqを使ってどうやって扱うことができますか? 。(私は別のツールとそれらをオフに解析することができ確信しているが、私はJQの正しい使用方法を学びたい

答えて

26

それは次のようになります。外側の配列を超える

jq '.[].aux[].def' file.json 

.[]反復処理し、.aux[]は、反復処理しました。auxすべてのノードの配列と.defが自分.defプロパティを表示します

この意志出力:

"I want this" 

あなたは二重引用符を取り除きたい場合は合格-r--rawjqへ:

jq -r '.[].aux[].def' file.json 

出力:

I want this 
+0

ああ、私はすでに問題の '-r'を使用している参照。とにかく、それは傷つくことはありません! :) – hek2mgl

関連する問題