[英]Bash to list all json paths
我有一个json
文件,我想列出它的所有路径。 例如: appsettings.json 文件:
{
"foo": "bar",
"zuzu": {
"lele": "lala"
},
"eita": [
{
"oxe": "right"
}
]
}
预期结果是一个包含(作为 bash 变量)的数组:
[
"foo",
"zulu",
"zuzu.lele",
"eita",
"eita.0",
"eita.0.oxe"
]
我已经用jq
尝试了以下操作,但我无法迭代jq
结果,而且我一无所知。
#!/bin/bash
join() {
# $1 is return variable name
# $2 is sep
# $3... are the elements to join
local retname=$1 sep=$2 ret=$3
shift 3 || shift $(($#))
printf -v "$retname" "%s" "$ret${@/#/$sep}"
}
jsonPaths=$(cat j.json | jq 'path(..)')
for path in $jsonPaths; do
join pathString "." "${path[@]}"
echo $path
done
$ jq '[ path(..) | join(".") ] | del(.[0])' /tmp/2.json
[
"foo",
"zuzu",
"zuzu.lele",
"eita",
"eita.0",
"eita.0.oxe"
]
笔记:
cat file | jq
cat file | jq
是cat
的无用用法。 做jq ... file
readarray -t arr < <(jq -r ....)
jq
具有相当强大的编程语言。 首先尝试解决jq
问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.