[英]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.