2017-10-19 4 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가 "STARTED"가 아닌 객체를 단순히 인쇄하려면 부정을 사용하십시오 :

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

"시작됨"상태가 여러 값과 관련되어 있으면 자세한 내용을 제공하십시오. 정규 표현식을 사용할 필요가 없을 수도 있습니다. 실제로 정규식을 사용해야하는 경우 test을 사용하는 것이 좋습니다.