私のテストjsonファイルは次のとおりです。
{
"server":"xxx",
"cert":"line1\nline2",
"security/path": "/var/log/systems.log"
}
keyでフィルタリングしたいが、security/path
次のいずれのコマンドも機能しません。
jq .security/path test.json
jq: error: path/0 is not defined at <top-level>, line 1:
.security/path
jq: 1 compile error
jq '.security/path' test.json
同じ結果が表示されます。
答え1
~から基本フィルタ:
オブジェクト識別子インデックス:
...
キーに特殊文字が含まれている場合、または数字で始まる場合は、次のように二重引用符で囲む必要があります。
."foo$"
そうでなければ.["foo$"]
....
だから、
$ jq -r '."security/path"' test.json
/var/log/systems.log
答え2
出力が次のような場合、
"annotations": {
"eks.amazonaws.com/role-arn": "arn:aws:iam::907636088649:role/stg-eks_helm-chart",
"meta.helm.sh/release-name": "helm-chart-base",
"meta.helm.sh/release-namespace": "stg-helm-chart"
}
以下はうまくいきます。
jq -r '.metadata.annotations["eks.amazonaws.com/role-arn"]'
次の出力が生成されます。
arn:aws:iam::907636088649:role/stg-eks_helm-chart