Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux jq-在keyname中转义反斜杠_Linux_Jq - Fatal编程技术网

Linux jq-在keyname中转义反斜杠

Linux jq-在keyname中转义反斜杠,linux,jq,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 这不是有效的JSON文档。JSO

我有一个带\的密钥,在使用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

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


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

{
  "kubectl.kubernetes.io\\last-applied-configuration": "test"
}
如果您有这样一份有效的文件,那么您可以使用:

jq '.["kubectl.kubernetes.io\\last-applied-configuration"]' </tmp/yo

jq.[“kubectl.kubernetes.io\\last applicated configuration”]”需要更多的引号。您的
s正在被shell吃掉,而不是传递给
jq
。另一件事是,您的数据根本不是有效的JSON。无论是
jq
还是任何其他兼容的解析器都不会读取它——我很好奇,首先是如何生成它的。例如,如果将“JSON文档”粘贴到Chrome中,给定同一输入文件的Python JSON模块将发出
ValueError:Invalid\escape:line 2 column 25(char 26)
,它更慷慨一点——它完全忽略了反斜杠,使键
kubectl.kubernetes.iolast应用配置
。理智的人(即Windows世界以外的所有人)使用前斜杠作为分隔符是有原因的。