我想要达到的目标:
我想要按日期筛选系统日志文件,即当我执行以下操作时:
$ cat /var/log/syslog | grep -i "error\|warn\|kernel"
它打印出像这样的行,比如说最近三天:
(...)
Apr 3 06:17:38 computer_name kernel: [517239.805470] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready
(...)
Apr 4 19:34:21 computer_name kernel: [517242.523165] e1000e: enp0s25 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
(...)
Apr 5 09:00:52 computer_name kernel: [517242.523217] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s25: link becomes ready
如何使用grep(选择或过滤):
- 按日期? - 按日期+小时?
我尝试了什么:
$ cat /var/log/syslog | grep -i "Apr 5" | grep -i "error\|warn\|kernel"
在syslog
文件上按预期工作,但在kern.log
文件上却不行,例如,它只返回:Binary file (standard input) matches
。当我使用tail
命令查看这个特定文件时,我可以看到与syslog
文件中相同的起始日期格式。
问题:
如何在其他日志文件(如kern.log
文件)上实现相同的效果?
此外,是否可以进行以下过滤:
- 按日期范围过滤?
- 按日期+小时范围过滤?
提示:如果可能的话,请使用“易于记忆的命令”。
sudo
(特别是如果用户是adm
组的成员,而“主要”用户通常都是)。 - PerlDuck