Чего я хочу добиться:
Я хотел бы отфильтровать файл системного журнала по дате, т.е. когда я делаю:
$ 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
файл?
Кроме того, возможно ли фильтровать:
- по диапазону дат?
- по дате + часовой диапазон?
Подсказка: если возможно, с «легко запоминающимися командами».