如何在 bash 中使用 jq 制表嵌套的 JSON 列表
How tabulize nested JSON lists using jq in bash
我想将 JSON 文件中的数据解析为 tsv 文件,但我无法让它工作。
输入
{
"images": [
{
"id": "592a77a5-614e-4ed8-b846-d4db1f27edbf",
"name": "ubuntu",
"tags": [
"latest"
]
},
{
"id": "592da7a5-614e-4ed8-b846-d4db1f27edbf",
"name": "debian",
"tags": [
"latest",
"10.0"
]
}
]
}
期望的输出
所需的输出是制表符分隔的 table
ubuntu latest
debian latest
debian 10.0
我试过的
# My data
echo '{"images":[{"id":"592a77a5-614e-4ed8-b846-d4db1f27edbf","name":"ubuntu","tags":["latest"]},{"id":"592da7a5-614e-4ed8-b846-d4db1f27edbf","name":"debian","tags":["latest","10.0"]}]}' > my.json
# My query
jq -r '.images | map({id} + (.tags | fromjson[])) | @tsv' my.json > my.tsv
首先我访问图像列表,然后我想对所有 id 进行操作,我想要标签。我从那里借了张地图,但是好像不行。我的查询和他们的查询之间的唯一区别是带有 .images.
的额外层
在进入标签之前将名称保存到变量中
jq -r '.images[] | .name as $name | .tags[] | [$name, .] | @tsv'
ubuntu latest
debian latest
debian 10.0
我想将 JSON 文件中的数据解析为 tsv 文件,但我无法让它工作。
输入
{
"images": [
{
"id": "592a77a5-614e-4ed8-b846-d4db1f27edbf",
"name": "ubuntu",
"tags": [
"latest"
]
},
{
"id": "592da7a5-614e-4ed8-b846-d4db1f27edbf",
"name": "debian",
"tags": [
"latest",
"10.0"
]
}
]
}
期望的输出
所需的输出是制表符分隔的 table
ubuntu latest
debian latest
debian 10.0
我试过的
# My data
echo '{"images":[{"id":"592a77a5-614e-4ed8-b846-d4db1f27edbf","name":"ubuntu","tags":["latest"]},{"id":"592da7a5-614e-4ed8-b846-d4db1f27edbf","name":"debian","tags":["latest","10.0"]}]}' > my.json
# My query
jq -r '.images | map({id} + (.tags | fromjson[])) | @tsv' my.json > my.tsv
首先我访问图像列表,然后我想对所有 id 进行操作,我想要标签。我从
在进入标签之前将名称保存到变量中
jq -r '.images[] | .name as $name | .tags[] | [$name, .] | @tsv'
ubuntu latest
debian latest
debian 10.0