【发布时间】:2015-02-09 20:54:31
【问题描述】:
我需要在我的日志文件中统计每小时的消息数。每个日志文件行前面都有时间戳。因此,我使用以下 'for' 和 'grep' 命令来执行此操作 -
for i in `seq 0 23`
do egrep "$i:[0-9][0-9]:[0-9][0-9] <some_pattern>" filename | wc -l
done
这将为我提供从 0 到 23 的每小时消息数。
但是,这不适用于5:23:32 等单个数字小时,因为它前面有一个空格。那么 grep 必须是 -
egrep " $i:[0-9][0-9]:[0-9][0-9] <some_pattern>" filename | wc -l
如果不是,它将错误地匹配以 15:23:32 开头的行
那么我如何告诉 grep 一个数字前面只能有空格或行首。
【问题讨论】: