在寻呼机“少”中打破 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 等基于行的工具解析它们。现在您查看不使用lessgrepsed 的作者的日志。 格式化 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的主要内容,如果未能解决你的问题,请参考以下文章

Jquery循环插件在同一页面中的多个寻呼机

等号神奇地出现在发送到寻呼机的消息中

iPython 是不是具有在寻呼机中查看变量的内置支持? [复制]

Java双亲委派模型:为什么要双亲委派?如何打破它?破在哪里?

Java双亲委派模型:为什么要双亲委派?如何打破它?破在哪里?

如何在asp.net中隐藏寻呼机