jq가 있는 배열에 요소가 있는지 확인하는 방법
어레이가 있는데 해당 어레이에 요소가 있는지 확인하거나 jq, fruit.json을 사용하여 해당 요소를 어레이에서 가져올 필요가 있습니다.
{
"fruit": [
"apple",
"orange",
"pomegranate",
"apricot",
"mango"
]
}
cat fruit.json | jq '.fruit .apple'
동작하지 않는다
contains의 의미는 전혀 간단하지 않다.일반적으로 어레이에 특정 값이 있는지 테스트하려면 '인덱스'를 사용하는 것이 좋습니다.
.fruit | index( "orange" )
그러나 대상 항목 자체가 배열인 경우 일반 형식은 다음과 같습니다.
ARRAY | index( [ITEM] )
사용해야 합니다. 예:
[1, [2], 3] | index( [[2]] ) #=> 1
입력/1
당신의 jq가IN/1
더 나은 해결책은 그것을 사용하는 것입니다.
.fruit as $f | "orange" | IN($f[])
당신의 jq가first/1
(jq 1.5와 마찬가지로) 다음으로 고속의 정의를 나타냅니다.IN/1
사용 방법:
def IN(s): first((s == .) // empty) // false;
any(_;_)
때때로 더 편리한 또 다른 효율적인 대안은 다음을 사용하는 것입니다.any/2
,예.
any(.fruit[]; . == "orange")
또는 동등하게:
any(.fruit[] == "orange"; .)
가지기 위해jq
어레이의 경우 성공이 반환됩니다.fruit
포함하다"apple"
, 그 이외의 에러는 다음과 같습니다.
jq -e '.fruit|any(. == "apple")' fruit.json >/dev/null
발견된 요소를 출력하려면 로 변경합니다.
jq -e '.fruit[]|select(. == "apple")' fruit.json
고정 스트링을 검색할 경우 이는 그다지 관련이 없지만 이 문자열은select
표현식이 다른 값과 일치할 수 있습니다(예: regexp인 경우).
고유한 값만 출력하려면 결과를 다음에 전달합니다.unique
.
jq '[.fruit[]|select(match("^app"))]|unique' fruit.json
다음부터 모든 과일을 검색합니다.app
및 고유값을 출력합니다.(원래의 표현은 다음과 같이 감싸야 한다는 점에 주의해 주세요.[]
전해지기 위해unique
.)
[경고: 댓글 및 대체 답변을 참조하십시오]
cat fruit.json | jq '.fruit | contains(["orange"])'
향후 방문자에게 있어서 어레이가 변수에 있고 입력과 대조하여 확인하고 싶을 때 jq 1.5(IN 없음)가 있는 경우 최적의 옵션은 다음과 같습니다.index
그러나 두 번째 변수:
.inputField as $inputValue | $storedArray|index($inputValue)
이것은 기능적으로 와 동등합니다..inputField | IN($storedArray[])
.
여기에 답을 더하면, 만약 당신이 과일 배열을 다른 과일 배열과 비교해서 걸러야 한다면, 당신은 다음과 같은 것을 할 수 있다:
cat food.json | jq '[.fruit[] as $fruits | (["banana", "apple"] | contains([$fruits])) as $results | $fruits | select($results)]'
그러면 위의 샘플 json에 "Apple"만 포함된 배열이 반환됩니다.
이 수정된 샘플은 여기서 작동했습니다.
jq -r '.fruit | index( "orange" )' fruit.json | tail -n 1
출력의 마지막 줄만 가져옵니다.
존재하는 경우 반환됩니다.0
그렇지 않으면 반환됩니다.null
.
언급URL : https://stackoverflow.com/questions/43259563/how-to-check-if-element-exists-in-array-with-jq
'programing' 카테고리의 다른 글
JSON - JSONArray를 통해 반복합니다. (0) | 2023.03.23 |
---|---|
SQL에서 두 개의 고유한 열이 있는 최신 날짜별로 행 선택 (0) | 2023.03.23 |
Wordpress 사이트에서 데이터베이스 쿼리 통계를 표시하려면 어떻게 해야 합니까? (0) | 2023.03.23 |
MUI에서 TextField 글꼴 색상을 변경하시겠습니까? (0) | 2023.03.23 |
AngularJS 드롭다운 지시문 숨기기(외부를 클릭할 때 (0) | 2023.03.23 |