gpt4 book ai didi

arrays - 将 JSON 数组读入 Bash 数组

转载 作者:行者123 更新时间:2023-12-04 02:28:26 25 4
gpt4 key购买 nike

我有以下 json 文件:

{
"data": {
"allPost": {
"edges": [
{
"node": {
"slug": "fp-cheat-sheet",
"labels": [
"FUNCTIONAL PROGRAMMING",
"HASKELL",
"SCALA"
]
}
},
{
"node": {
"slug": "nlp-101",
"labels": [
"DATA SCIENCE",
"NLP",
"PYTHON"
]
}
}
]
}
}
}

我正在编写一个 shell 脚本来提取每个 edge 的信息,使用 JQ。从每个edge,这是一个数组,我能够提取slugs,这是一个字符串,但不是labels,它也是一个数组:

readarray -t slugs < <(cat ${json_file_name} | jq .data.allPost.edges[].node.slug)

readarray -t tags < <(cat ${json_file_name} | jq .data.allPost.edges[].node.labels)

echo ${slugs[1]}
# successfully prints '"nlp-101"'

echo ${tags[1]}
# wrongly prints '"FUNCTIONAL PROGRAMMING",'

我想为每个帖子提取标签并以完全相同的格式将其打印在文件中。例如对于 echo ${tags[1]} 我希望它打印:

 ["DATA SCIENCE", "NLP", "PYTHON"]

如何修复上述代码以根据需要从上述 JSON 中提取标签?

最佳答案

使用 -c 标志调用 JQ,以便它在一行中打印每个数组。

$ readarray -t tags < <(jq -c '.data.allPost.edges[].node.labels' file)
$ echo "${tags[1]}"
["DATA SCIENCE","NLP","PYTHON"]

关于arrays - 将 JSON 数组读入 Bash 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65750516/

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