如何使用jq命令过滤JSON值,提取指定密码字段并解决执行报错
jq提取JSON字段报错解决方案
报错根因
- 语法不兼容:纯数字命名的键在jq中不能直接用
.键名的简写访问,你写的.0不符合jq语法规则,必须用."0"或者["0"]的格式包裹数字键 - 路径错误:
license_keys和passwords是data_bags下的同级节点,你写的路径多了license_keys层级,不属于正确的访问路径
正确实现命令
提取单个指定密码(以ONE为例)
cat .\sample.json | jq-win64.exe -r '."0".data_bags.passwords.ONE'
执行后直接输出无引号的原始密码值:
abcd
兼容性写法(方括号访问,适配所有特殊字符命名的键)
cat .\sample.json | jq-win64.exe -r '["0"]["data_bags"]["passwords"]["ONE"]'
提取passwords下所有键值对
cat .\sample.json | jq-win64.exe -r '."0".data_bags.passwords'
输出结果:
{ "ONE": "abcd", "TWO": "efgh", "THREE": "hhhhh", "FOUR": "abcdefgh" }
内容的提问来源于stack exchange,提问作者Santosh Garole
相关产品推荐
相关产品推荐

