![grep 日期范围 - apache 日志](https://linux22.com/image/532778/grep%20%E6%97%A5%E6%9C%9F%E8%8C%83%E5%9B%B4%20-%20apache%20%E6%97%A5%E5%BF%97.png)
我想知道如何进行以下 grep:
- grep Apache 日志仅针对某个日期范围,假设从 2010 年 11 月 5 日到 2010 年 12 月 5 日
和
- grep Apache 日志从 2010 年 11 月 15 日起直到最后一个日志条目。
谢谢
答案1
我将按相反的顺序回答这些问题:
grep Apache 日志从 2010 年 11 月 15 日起直到最后一个日志条目。
这不需要任何类型的日期解析,可以通过以下方式轻松完成sed
:
# sed -n '/15\/Nov\/2010/,$ p' /path/to/access_log
这告诉说显示p
从 开始到15/Nov/2010
文件结尾的行( ) $
。
grep Apache 日志仅针对某个日期范围,假设从 2010 年 11 月 5 日到 2010 年 12 月 5 日
这几乎是一样的,但是你不想显示文件末尾的行,而是希望在到达第二个日期时停止打印行。你可以尝试这样做:
# sed -n '/5\/Nov\/2010/,/5\/Dec\/2010/ p'
请注意,在这两个例子中,我都转义了/
字符,因为sed
使用这些字符来分隔正则表达式。