我有以下日志
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之间的线路。这是我的命令,但它没有像预期的那样检索结果。任何必须修正的想法
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)'发布于 2022-08-22 11:29:42
awk是一个比grep更好的工具。
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解决方案:
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 hiRegEx详细信息:
^:开始[^T]+T1:匹配T,后面跟着数字1([0-2]|3:([0-2][0-9]|30)):匹配数字0 to 2以匹配时间,从10、11或12开始。交替后,我们将小时13与分钟00匹配为29或30。:.* hi:匹配:,后面跟着任何字符串,后面跟着空格和hihttps://stackoverflow.com/questions/73444194
复制相似问题