首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用命令行按key=value字段对日志文件进行排序

使用命令行按key=value字段对日志文件进行排序
EN

Stack Overflow用户
提问于 2018-09-12 06:43:26
回答 1查看 141关注 0票数 1

我有一些千兆字节的日志,我试图跟踪给定方法最糟糕的执行时间,所以我使用grep来筛选重要的行

代码语言:javascript
复制
$ grep "m=a" /var/log/syslog* 
Sep 12 05:14:00 host1[716]: 2018-09-12 05:14:00.076 [MessageBroker-2] INF 1 com.acme m=a h_status=success, h_time=51, msg=some message
Sep 11 20:00:00 host1[716]: 2018-09-11 20:00:00.389 [MessageBroker-2] INF 1 com.acme m=a h_status=success, h_time=54, msg=some message
Sep 12 04:42:00 host1[716]: 2018-09-12 04:42:00.682 [MessageBroker-2] INF 1 com.acme m=a h_status=success, h_time=77, msg=some message
Sep 12 05:15:02 host1[716]: 2018-09-12 05:15:02.536 [Test worker    ] INF 2 com.acme m=a h_status=success, h_time=8, msg=some message

现在,我想按desc顺序对该文件进行排序,以获得具有最高h_time字段值的行。我试着使用排序来完成这个任务,但是没有成功,因为我没有获得如何提取h_time字段值的方法。

我搜索了如何使用自定义分隔符来识别使用排序的自定义字段,并找到了thisthis anwser,但没有成功。

如何使用使用尽可能简单的语法的命令行工具将这些行按desc顺序按h_time字段排序?

EN

回答 1

Stack Overflow用户

发布于 2018-09-12 07:01:39

你可以这样做。首先使用perl替换并带来数值,如下所示,然后对其进行排序。这样,您甚至可以只显示所需的信息。

代码语言:javascript
复制
perl -pe 's/(.+)(h_time=\d+, )(.+)/\2\1\3/g' log | sort -V

这意味着:

代码语言:javascript
复制
h_time=51, Sep 12 05:14:00 host1[716]: 2018-09-12 05:14:00.076 [MessageBroker-2] INF 1 com.acme l=35 h_status=success, msg=some message
h_time=54, Sep 11 20:00:00 host1[716]: 2018-09-11 20:00:00.389 [MessageBroker-2] INF 1 com.acme l=35 h_status=success, msg=some message
h_time=77, Sep 12 04:42:00 host1[716]: 2018-09-12 04:42:00.682 [MessageBroker-2] INF 1 com.acme l=35 h_status=success, msg=some message
h_time=8, Sep 12 05:15:02 host1[716]: 2018-09-12 05:15:02.536 [Test worker    ] INF 2 com.acme l=35 h_status=success, msg=some message

或者如果你只想要一些信息:

代码语言:javascript
复制
perl -pe 's/(\w+ \d+ [\d:]+).+\[(.+)].+h_time=(\d+), .+/\3 ms\t\2\t\t\1/g' log | sort -V

这意味着:

代码语言:javascript
复制
8 ms    Test worker             Sep 12 05:15:02
51 ms   MessageBroker-2         Sep 12 05:14:00
54 ms   MessageBroker-2         Sep 11 20:00:00
77 ms   MessageBroker-2         Sep 12 04:42:00
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52288954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档