gpt4 book ai didi

json - jq:打印对象中每个条目的键和值

转载 作者:IT老高 更新时间:2023-10-28 12:46:24 25 4
gpt4 key购买 nike

如何让 jq 像这样获取 json:

{
"host1": { "ip": "10.1.2.3" },
"host2": { "ip": "10.1.2.2" },
"host3": { "ip": "10.1.18.1" }
}

并生成此输出:

host1, 10.1.2.3
host2, 10.1.2.2
host3, 10.1.18.1

我对格式不感兴趣,我只是不知道如何访问键名和值。

最佳答案

要将顶级 key 作为流获取,您可以使用 built-in function 键[]。因此,解决您的特定问题的一种方法是:

jq -r 'keys[] as $k | "\($k), \(.[$k] | .ip)"' 

keys 按排序顺序生成键名;如果您希望它们按原始顺序排列,请使用 keys_unsorted

另一种按原始顺序生成键的方法是:

jq -r 'to_entries[] | "\(.key), \(.value | .ip)"'

CSV 和 TSV 输出

@csv 和 @tsv 过滤器在这里可能也值得考虑,例如

jq -r 'to_entries[] | [.key, .value.ip] | @tsv'

产生:

host1   10.1.2.3
host2 10.1.2.2
host3 10.1.18.1

嵌入对象

如果感兴趣的键像以下示例中那样嵌入,则必须按照所示行修改 jq 过滤器。

输入:

{
"myhosts": {
"host1": { "ip": "10.1.2.3" },
"host2": { "ip": "10.1.2.2" },
"host3": { "ip": "10.1.18.1" }
}
}

修改:

jq -r '.myhosts | keys[] as $k | "\($k), \(.[$k] | .ip)"'

关于json - jq:打印对象中每个条目的键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34226370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com