jq - 在键名中转义反斜杠

seb*_*ian 5 linux jq

我有一个带有 \ 的密钥,但我似乎无法使用 jq 访问它。任何帮助表示赞赏。

$ cat /tmp/yo
{
  "kubectl.kubernetes.io\last-applied-configuration": "test"
}

$ cat /tmp/yo | jq .["kubectl.kubernetes.io\last-applied-configuration"]
parse error: Invalid escape at line 2, column 52
Run Code Online (Sandbox Code Playgroud)

Cha*_*ffy 1

这不是有效的 JSON 文档。JSON 中的反斜杠必须进行转义才能包含在文字字符串中。针对生成此无效内容的任何工具报告错误。


在 JSON 中包含反斜杠将如下所示:

{
  "kubectl.kubernetes.io\\last-applied-configuration": "test"
}
Run Code Online (Sandbox Code Playgroud)

如果您有这样的有效文件,您可以使用:

jq '.["kubectl.kubernetes.io\\last-applied-configuration"]' </tmp/yo
Run Code Online (Sandbox Code Playgroud)