- awk.json 只会被处理第一行。
如果第一行是json但是包含了小括号,也会报错 No JSON object could be decoded。
这就是 python -m json.tool 的局限!
python -m json.tool awk.json
- 使用whil read来解决原来只有第一行被读取的问题。
但是任何一行的json里包含了小括号,还是会报错 No JSON object could be decoded。其他行能解析的会被解析格式化。
cat awk.json |while read line;do echo "$line"|python -m json.tool;done
- 下面是从html文件日志中筛选出只包含json内容的行,都是以 { 开头的行:
cat cpctest_cpctestcode1.txt_2018-07-19T16-16-47.313.html|while read line;do echo "$line"|gawk '$0 ~ /^\{/{print $0}' >> awk.json;done
- 这个是基本一步到位的,只打算显示json格式化后的结果。
但是含有小括号的行在bash下执行下面的命令还是无法被json格式化:
cat cpctest_cpctestcode1.txt_2018-07-19T16-16-47.313.html|while read line;do echo "$line"|gawk '$0 ~ /^\{/{print $0}'|python -m json.tool;done
并未实现的效果,一个文档某些行是json数据,达到非json数据原样输出,json数据格式化的效果。考虑了awk的模式匹配来判断,然后调用系统命令格式化json数据。但是也会有各类问题,所以没有搞这个了。
实践发现上述文件是从cpc的mongo导出的json数据,其中的_id和NumberLong在json viewer下也提示报错,所以认为这一点是影响python解析json的原因之一。