У меня есть журнал на сервере linux. Записи в формате:Фильтровать журналы Linux на основе временной отметки Unix
[метка времени (в секундах начиная с 1 января 1970 г.)] ввода данных журнала
мне нужно Баш скрипт, который будет принимать имя файла журнала и вывода только вчерашние записи (от 12 : 00 до 23:59:59 предыдущего дня) и выводят эти строки в новый файл.
Я видел различные сценарии, которые фильтруют журналы на основе дат, но все они до сих пор имеют дело с метками даты в более удобных для чтения форматах или не являются динамическими. Они полагаются на жестко закодированные даты. Мне нужен скрипт, который будет запускаться в ежедневном задании cron, поэтому он должен знать, какая текущая дата каждый раз выполняется.
Спасибо.
Обновление: Это то, что у меня есть до сих пор. Он просто никогда не делает оценку даты. Он печатает 00 для даты, так что все проходит.
head -5 logfile.log | awk '{
if($1 >= (date -d "today 00:00:00" +"%s"))
print $1 (date -d "today 00:00:00" +"%s");
}'
Я запутался, хотя, даже если дата оценивает должным образом, $ 1 будет иметь номера в квадратных скобках, и моя дата будет только цифры. Будет ли он правильно сравнивать, если строки форматируются по-другому? Я еще не понял, как еще сунуть номер даты, возвращаемый по дате, в строку с скобками.
Вы будете заинтересованы в '-D дата "вчера 00:00:00"' и '-D дата "вчера 23:59:59"' –
рекомендую Ответ @ glennjackman, в сочетании с [awk conditionals] (http://www.thegeekstuff.com/2010/02/awk-conditional-statements/) –
Я рекомендую добавить опцию даты '+"% s "'. – Cyrus