grep 日期范围 - apache 日志

Cha*_*les 5 log-files grep

我想知道我怎么能做以下 grep:

  • grep Apache 日志仅适用于一系列日期,假设从 2010 年 11 月 5 日到 2010 年 12 月 5 日

  • grep 从 2010 年 11 月 15 日开始到最后一个日志条目的 Apache 日志。

谢谢

lar*_*sks 5

我将以相反的顺序回答这些:

grep 从 2010 年 11 月 15 日开始到最后一个日志条目的 Apache 日志。

这不需要任何类型的日期解析,并且可以通过以下方式轻松完成sed

# sed -n '/15\/Nov\/2010/,$ p' /path/to/access_log
Run Code Online (Sandbox Code Playgroud)

这告诉说要显示p15/Nov/2010文件 ( $)的末尾开始的行( )。

grep Apache 日志仅适用于一系列日期,假设从 2010 年 11 月 5 日到 2010 年 12 月 5 日

这几乎是一样的,但不是在文件末尾显示行,而是在到达第二个日期时停止打印行。你可以尝试这样的事情:

# sed -n '/5\/Nov\/2010/,/5\/Dec\/2010/ p'
Run Code Online (Sandbox Code Playgroud)

请注意,在这两个示例中,我都在对/字符进行转义,因为sed使用这些字符来分隔正则表达式。

  • 如果您使用不同的分隔符,则不必转义斜杠:`sed -n '\|5/Nov/2010|,\|5/Dec/2010|p'` (3认同)