Ошибка отображения журнала за последние 10 минут с помощью awk

Ошибка отображения журнала за последние 10 минут с помощью awk

Я использую команду ниже для отображения данных журнала за последние 10 минут. Она отлично работает, если месяц остается тем же, однако при смене месяца она не показывает никаких данных.

awk -v d1="$D1" -v d2="$D2" '$0 > d1 && $0 < d2 || $0 ~ d2' /home/user.log

Работает нормально, если,

D1="Aug  1 12:00:00"
D2="Aug  1 12:10:00"

Но не показывает никаких данных, если,

D1="Jul 31 11:55:00"
D2="Aug  1 00:05:00"

P.S. Я использую AIX.

решение1

Я думаю, это потому, что на самом деле сравниваются строки, а не даты. Когда месяц меняется, сравнение нарушается.

Попробуйте отформатировать дату другим способом, возможно, используя формат эпохи или числовой формат даты.

date -d "Jul 31 11:55:00" +%s

выводит 1533063300. Аналогично,

date -d "Aug  1 00:05:00" +%s

выходы 1533107100.

А вот дальше сравнение должно быть простым.

Связанный контент