我的输入文件如下所示:
{
"login": "dmaxfield",
"id": 7449977,
...
}
{
"login": "dmaxfield",
"id": 7449977,
...
}
我可以使用以下命令获取所有登录名: cat members | jq '.[].login'
但是我无法破解语法来获取登录名和ID?
Answers:
您可以jq '.[] | .login, .id'
用来获取每个登录名及其ID。
jq
与一系列对象配合使用时效果很好-不需要数组包装器。该...
字符串最后后面的逗号需要去除,但我认为这是暗示。
jq '.[] | {login, id}'
login.name
怎么办?jq '.[] | {login.name, id}'
似乎有效,请问正确的方法是什么?
jq '.[] | {name: .login.name, id}'
只需在此处提供一个示例(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”的对象