Шаблон egrep состоит из трех частей. Первая часть захватывает все с 00:00:00 до 09:59:59. Вторая часть захватывает все с 10:00:00 до 16:59:59, а третья часть захватывает 17:00:00.
Ваш первый `egrep` удаляет значения, начинающиеся с` 08` или `09` (т. Е. Времена между` 08: 00` и `09: 59`), а второй допускает` 17: 10`, `17: 20` , `17: 30` и т. Д. ..., чтобы пройти.
G-Man 9 лет назад
0
@ G-Man Спасибо. Ты прав. Я думаю, что я исправил это сейчас.
Daniel Goldfarb 9 лет назад
0
Похоже, это должно работать. Его можно упростить до `egrep" 2014-12-04 (0 [0-9] | 1 [0-6] | 17: 00: 00) "`.
G-Man 9 лет назад
0
0
vembutech
Если вы хотите 4-минутный интервал журналов,
grep "01/APR/2014:16:3[5-9]" logfile
вернет все строки журнала между 16:35 и 16:39 01 апреля 2014 года.
Предположим, что вам нужны последние 5 дней, начиная с 17 сентября 2014 года, вы можете использовать следующее:
grep "1[3-7]/Sep/2011" logfile
Надеется, что это помогает,
0
wurtel
Вы можете выбрать начальную и конечную строки, например sed:
sed -n '/Dec 5 11:00/,/Dec 5 12:00/p' /var/log/daemon.log
Это напечатает все строки от первой строки Dec 5 11:00до (и включая) первую строку с Dec 5 12:00. Это предполагает, что журнал является последовательным по времени (т.е. все строки расположены в порядке времени). -nЯвляется подавление действия по умолчанию печати каждой строки.
Но это предполагает, что есть записи для `Dec 5 11: 00` и` Dec 5 12: 00`, не так ли? Если за `Dec 5 10: 59` сразу же следует` Dec 5 11: 01`, то `sed` не будет знать, с чего начать. И если есть `Dec 5 11: 00`, но после` Dec 5 11: 59` следует `Dec 5 12: 01`,` sed` не будет знать, где остановиться.
G-Man 9 лет назад
0
Правда; Вы могли бы пропустить часть `: 00`, но опять же должна быть хотя бы одна строка журнала в час. Лично я бы адаптировал скрипт под данные; возможно, даже применить некоторые Perl Foo.
wurtel 9 лет назад
1