2017-10-19 116 views
0

我想設置一個警報,以便下面的JSON對象狀態說什麼,但開始。我開始玩有條件的jq,但我不確定如何實現這個正則表達式。jq只顯示對象不匹配時

{ 
    "page": 0, 
    "page_size": 100, 
    "total_pages": 10, 
    "total_rows": 929, 
    "headers": [ 
    "*" 
    ], 
    "rows": [ 
    { 
     "id": "168", 
     "state": "STARTED" 
    }, 
    { 
     "id": "169", 
     "state": "FAILED" 
    }, 
    { 
     "id": "170", 
     "state": "STARTED" 
    } 
    ] 
} 

我只想顯示失敗的對象的ID和狀態,這就是我想

jq '.rows[] | .id, select(.state | contains("!STARTED"))' test.json 

我想我的輸出是這樣的

{ 
"id": "169", 
"state": "FAILED" 
} 

回答

1

如果您只是想打印出.state不是「開始」的對象,只需使用否定:

.rows[] | select(.state != "STARTED") 

如果「啓動」狀態與多個值相關聯,請提供更多詳細信息。可能不需要使用正則表達式。如果你真的需要使用正則表達式,那麼你可能會想要使用test