내 입력 파일은 다음과 같습니다.
{
"login": "dmaxfield",
"id": 7449977,
...
}
{
"login": "dmaxfield",
"id": 7449977,
...
}
이 모든 로그인 이름을 얻을 수 있습니다. cat members | jq '.[].login'
하지만 로그인과 ID를 모두 얻기 위해 구문을 해독 할 수 없었습니까?
내 입력 파일은 다음과 같습니다.
{
"login": "dmaxfield",
"id": 7449977,
...
}
{
"login": "dmaxfield",
"id": 7449977,
...
}
이 모든 로그인 이름을 얻을 수 있습니다. cat members | jq '.[].login'
하지만 로그인과 ID를 모두 얻기 위해 구문을 해독 할 수 없었습니까?
답변:
를 사용 jq '.[] | .login, .id'
하여 각 로그인 뒤에 해당 ID를 얻을 수 있습니다 .
jq
일련의 객체와 잘 작동합니다. 배열 래퍼가 필요하지 않습니다. ...
문자열과 마지막 후행 쉼표의 필요성 제거는,하지만 난 암시 할 것을 고려한다.
jq '.[] | {login, id}'
login.name
합니까? jq '.[] | {login.name, id}'
작동하는 것 같습니다. 올바른 방법은 무엇입니까?
jq '.[] | {name: .login.name, id}'
이것은 나를 위해 작동합니다.
> echo '{"a":1,"b":2,"c":3}{"a":1,"b":2,"c":3}' | jq '{a,b}'
{
"a": 1,
"b": 2
}
{
"a": 1,
"b": 2
}
여기에 예제를 하나 더 제공하십시오 (jq-1.6).
배열을 살펴보고 개체 요소의 필드와 해당 개체의 개체 필드를 선택합니다.
echo '[{"id":1, "private_info": {"name": "Ivy", "age": 18}}, {"id":2, "private_info": {"name": "Tommy", "aga": 18}}]' | jq ".[] | {id: .id, name: .private_info.name}" -
{
"id": 1,
"name": "Ivy"
}
{
"id": 2,
"name": "Tommy"
}
예제 데이터없이 :
jq ".[] | {id, name: .private_info.name}" -
.[]
: 배열 살펴보기
{id, name: .private_info.name}
: .id 및 .private_info.name을 가져 와서 필드 이름이 "id"및 "name"인 개체로 각각 래핑합니다.