gpt4 book ai didi

json - 使用命令 sed 更改日志文件日期?

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:18 28 4
gpt4 key购买 nike

我在日志文件中多次出现以下行以及其他数据。我喜欢通过首先将 json 部分导入 mongodb 并对其运行选定的查询来分析这些数据。

DEBUG 2015-04-18 23:13:23,374 [TEXT] (Class.java:19) - {"a":"1", "b":"2", ...}

要更改数据只是为了获取我使用的 json 部分:

cat mylog.log | sed "s/DEBUG.*19) - //g" > mylog.json

这里的主要问题是,这就像添加日期和时间部分以及作为附加的 json 值以获得如下所示的内容:

{"date": "2015-04-18", "time":"23:13:26,374", "a":"1", "b":"2", ...}

这是主要问题。我如何使用 linux 控制台和 sed 命令来做到这一点?或者通过替代控制台命令?

提前致谢

最佳答案

由于这似乎是一种非常严格的格式,您可能可以像这样使用 sed:

sed 's/DEBUG \([^ ]*\) \([^ ]*\).*19) - {/{ "date": "\1", "time": "\2", /' mylog.log

其中 [^ ]* 匹配非空格字符序列,而 \(regex\) 是一个捕获组,它使匹配的字符串可用于替换,如 \1\2 等,具体取决于其位置。您可以在替换部件中看到这些内容。

但是,如果是我,我会使用 Perl,因为它能够将一行拆分为多个字段并进行非贪婪匹配:

perl -ape 's/.*?{/{ "date": "$F[1]", "time": "$F[2]", /' mylog.log

后者会替换第一个 { 之前的所有内容(因为 .*? 会非贪婪地匹配),并将其替换为您想要的字符串。 $F[1]$F[2] 是该行中的第二个和第三个空白分隔字段; -a 使 Perl 以这种方式将行分割到 @F 数组中。

关于json - 使用命令 sed 更改日志文件日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29914083/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com