首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Unix中日志中时间戳之间的grep

Unix中日志中时间戳之间的grep
EN

Stack Overflow用户
提问于 2022-08-22 11:15:03
回答 1查看 52关注 0票数 0

我有以下日志

代码语言:javascript
运行
复制
2022-07-23T09:00:00,987 hi
2022-07-23T10:00:00,987 hi
2022-07-23T11:10:00,987 hi
2022-07-23T12:52:00,987 hi
2022-07-23T13:29:00,987 hi
2022-07-23T13:59:00,987 hi

我只想要从上午10点到下午13点30之间的线路。这是我的命令,但它没有像预期的那样检索结果。任何必须修正的想法

代码语言:javascript
运行
复制
sudo cat <path to my log file> | grep 'hi' | grep -E '2022-07-23T(10:[0-5][0-9]:[0-5][0-9]|13:30:00)'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-22 11:29:42

awk是一个比grep更好的工具。

代码语言:javascript
运行
复制
awk -F '[T,]' '$2 >= "10:00" && $2 <= "13:30" && /hi/' file

2022-07-23T10:00:00,987 hi
2022-07-23T11:10:00,987 hi
2022-07-23T12:52:00,987 hi
2022-07-23T13:29:00,987 hi

在此:

  • 使用-F '[T,]',我们在T,字符上分隔字段
  • awk -F '[T,]' '$2 >= "10:00" && $2 <= "13:30"对第二个字段与我们的数据范围进行词汇学比较。
  • /hi/在行中搜索hi

下面是一个使用regex魔术的grep解决方案:

代码语言:javascript
运行
复制
grep -E '^[^T]+T1([0-2]|3:([0-2][0-9]|30)):.* hi' file

2022-07-23T10:00:00,987 hi
2022-07-23T11:10:00,987 hi
2022-07-23T12:52:00,987 hi
2022-07-23T13:29:00,987 hi

RegEx演示

RegEx详细信息:

  • ^:开始
  • [^T]+
  • T1:匹配T,后面跟着数字1
  • ([0-2]|3:([0-2][0-9]|30)):匹配数字0 to 2以匹配时间,从101112开始。交替后,我们将小时13与分钟00匹配为2930
  • :.* hi:匹配:,后面跟着任何字符串,后面跟着空格和hi
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73444194

复制
相关文章

相似问题

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