gpt4 book ai didi

arrays - 使用 jq 从 Bash 数组创建对象数组

转载 作者:行者123 更新时间:2023-12-04 16:23:07 26 4
gpt4 key购买 nike

我正在尝试在给定 bash 中使用 jq 的数组的情况下在 bash 中创建一个对象数组。

这是我卡住的地方:

IDS=("baf3eca8-c4bd-4590-bf1f-9b1515d521ba" "ef2fa922-2038-445c-9d32-8c1f23511fe4")
echo "${IDS[@]}" | jq -R '[{id: ., names: ["bob", "sally"]}]'

结果:

[
{
"id": "baf3eca8-c4bd-4590-bf1f-9b1515d521ba ef2fa922-2038-445c-9d32-8c1f23511fe4",
"names": [
"bob",
"sally"
]
}
]

我想要的结果:

[
{
"id": "baf3eca8-c4bd-4590-bf1f-9b1515d521ba",
"names": [
"bob",
"sally"
]
},
{
"id": "ef2fa922-2038-445c-9d32-8c1f23511fe4",
"names": [
"bob",
"sally"
]
}
]

任何帮助将不胜感激。

最佳答案

使用 printf '%s\0' 将 bash 数组拆分为 NUL 分隔的项目,然后使用 -R 读取原始流或 --raw-input 并在您的 jq 过滤器中使用 split 和分隔符 "\u0000"< 将它们拆分为一个数组:

printf '%s\0' "${IDS[@]}" | jq -Rs '
split("\u0000") | map({id:., names: ["bob", "sally"]})
'

关于arrays - 使用 jq 从 Bash 数组创建对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69847625/

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