我的输入文件如下所示:
{
"login": "dmaxfield",
"id": 7449977,
...
}
{
"login": "dmaxfield",
"id": 7449977,
...
}
我可以使用以下命令获取所有登录名:cat members | jq '.[].login'
但是我无法破解语法以获取登录名和ID?
答案 0 :(得分:57)
您可以使用jq '.[] | .login, .id'
获取每个登录名及其ID。
答案 1 :(得分:29)
这对我有用:
> echo '{"a":1,"b":2,"c":3}{"a":1,"b":2,"c":3}' | jq '{a,b}'
{
"a": 1,
"b": 2
}
{
"a": 1,
"b": 2
}
答案 2 :(得分:4)
在这里再提供一个示例(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”的对象中
答案 3 :(得分:1)
为了选择缩进不同级别(即第一和第二级别)的值,您可以使用以下命令:
$ echo '{"a":{"aa":1,"ab":2},"b":3,"c":4}{"a":{"aa":5,"ab":6},"b":7,"c":8}' \
> | jq '[.a.aa,.a.ab,.b]'
[
1,
2,
3
]
[
5,
6,
7
]