2015-07-21 53 views
1

我正在使用js工具來解析一些JSON /字符串。我的小例子,是下面的命令:如何在jq中處理匹配函數的輸出?

echo '"foo foo"' | jq 'match("(foo)"; "g")' 

導致下面的輸出:

{ 
    "offset": 0, 
    "length": 3, 
    "string": "foo", 
    "captures": [ 
    { 
     "offset": 0, 
     "length": 3, 
     "string": "foo", 
     "name": null 
    } 
    ] 
} 
{ 
    "offset": 4, 
    "length": 3, 
    "string": "foo", 
    "captures": [ 
    { 
     "offset": 4, 
     "length": 3, 
     "string": "foo", 
     "name": null 
    } 
    ] 
} 

我希望我的這個例子最終輸出是:

"foo,foo" 

但在這case我得到兩個單獨的對象,而不是一個數組或類似的,我可以打電話implode。我想這個API不是爲我的UC而開發的,或者我對它的理解是非常錯誤的。請指教。

回答

3

下面的腳本需要從每個單獨的對象的字符串值與.string,包裹它們在陣列中[...],然後加入數組的成員使用join逗號。

我修改了正則表達式,因爲您實際上並不需要針對給定用例的捕獲組,但如果要訪問捕獲組,您可以執行.captures[].string而不是.string

echo '"foo foo"' | jq '[match("foo"; "g").string] | join(",")'

相關問題