如何读取类JSON格式日志的值?jq解析失败问题求助
问题根源
你日志里的内容不是标准JSON格式,而是Python字典的字符串表示(带u'前缀、单引号、大写True),jq仅支持解析标准JSON,因此触发解析错误。
解决方法
方法1:用Python转换为标准JSON(推荐,适配所有场景)
利用Python能直接解析这种格式的特性,先转成标准JSON再用jq处理:
echo "$log" | python3 -c "import sys, json; print(json.dumps(eval(sys.stdin.read())))" | jq '.command_log'
方法2:用sed做字符串替换(仅适合无特殊字符的简单场景)
如果日志内容里没有单引号、特殊转义字符,可以直接替换格式差异:
echo "$log" | sed -e "s/u'/\"/g" -e "s/'/\"/g" -e "s/True/true/g" | jq '.command_log'
替换规则:
- 把
u'替换为双引号" - 把剩余的单引号
'替换为双引号" - 把Python布尔值
True替换为JSON小写true
内容的提问来源于stack exchange,提问作者archana k
相关产品推荐
相关产品推荐

