在寻呼机“少”中打破 JSON
Posted
技术标签:
【中文标题】在寻呼机“少”中打破 JSON【英文标题】:Break JSON in pager "less" 【发布时间】:2019-05-14 09:20:51 【问题描述】:我使用名为 less
的寻呼机已有 20 年了。
时间变化,我经常查看包含 json 的文件。
单行的 json 字典对我来说不容易阅读。
如果查看日志文件,有没有办法将 json 分解为键值对?
例子:
如何在日志文件中显示如下所示的一行:
"timestamp": "2019-05-13 14:40:51", "name": "foo.views.error", "log_intent": "line1\nline2" ...
大概是这样的:
"timestamp": "2019-05-13 14:40:51"
"name": "foo.views.error"
"log_intent": "line1
line2"
....
我没有和寻呼机less
结婚,如果有更好的工具,请发表评论。
【问题讨论】:
问题是,在过去的 20 年中,您查看了作者的日志,这些作者了解系统管理员查看日志文件较少,或使用 grep 或 sed 等基于行的工具解析它们。现在您查看不使用less
、grep
或sed
的作者的日志。
格式化 json 绝对是可能的,我一直在做(必须做)的事情,但解决方案很大程度上取决于您的日志文件的格式。
好的,我承认你的情况似乎更简单,因为每一行都是有效的 json 文档,而不是与 json 混合的纯文本。忽略了这一点。但我一直认为纯文本是日志的最佳格式。
【参考方案1】:
在您的情况下,日志文件似乎每行包含一个 json 文档,您可以使用 jq
在管道传输到 less 之前预先格式化日志文件:
jq -s . file.log | less
有颜色:
jq -Cs . file.log | less -r
【讨论】:
这个工具对我来说是新的,但听起来不错:“jq 就像用于 JSON 数据的 sed - 您可以使用它来切片、过滤、映射和转换结构化数据,就像 sed 一样容易, awk、grep 和朋友让你玩文字。” stedolan.github.io/jq以上是关于在寻呼机“少”中打破 JSON的主要内容,如果未能解决你的问题,请参考以下文章
iPython 是不是具有在寻呼机中查看变量的内置支持? [复制]
Java双亲委派模型:为什么要双亲委派?如何打破它?破在哪里?