jqはスラッシュを含むキーをどのように処理しますか?

jqはスラッシュを含むキーをどのように処理しますか?

私のテスト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

おすすめ記事