grep текущая дата до 7 дней назад без конкретной даты - PullRequest
0 голосов
/ 15 мая 2018

В моем журнале дата сохраняется в виде May 01 11:01:30 2018. В grep я не могу назвать конкретные даты, например grep "May 0[1-8]".

Как я могу сделать grep или другую команду поиска, которая ищет в журнале 7 дней назад от текущей даты?

Пример: текущая дата - 7 дней назад

Если это возможно? Или простой скрипт?

С наилучшими пожеланиями!

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Я бы сделал что-то вроде этого: grep -A 100000 "$(date +'%b %d' -d '-7 days')" myservice.log

Где вы могли бы вставить что-то большее, чем 1000000, если вам нужно больше строк.

Аргумент команды date +'%b %d' даетВы выбираете нужный формат, а аргумент -d '-7 days' дает вам дату 7 дней назад.grep -A затем дает вам первое совпадение и 100000 строк после последнего совпадения в вашем файле.

0 голосов
/ 15 мая 2018

В зависимости от дальнейших целей, которые вы пытаетесь достичь, типа журналов и сложности, может потребоваться написать небольшой скрипт.

Вы можете взглянуть на Как получить все строки журнала между двумя диапазонами дат в Linux .Для быстрого ознакомления я также приведу здесь свой ответ:

Другой подход, который я часто использую для файлов журналов из приложений Java, - это найти номер строки первого вхождения отметок времени

FROM_DATE="Wed 21 Mar 14:52:08"
TO_DATE=""Wed 21 Mar 14:53:08"

FROM_LINE=$(grep -n -m 1 ${FROM_DATE} ${FILE} | cut -d ":" -f 1)
TO_LINE=$(grep -n -m 1 ${TO_DATE} ${FILE} | cut -d ":" -f 1)

затем выдайте информацию между, то есть

tail -n "${FROM_LINE}" ${FILE} | head -n $(expr $TO_LINE - $FROM_LINE)

или через

sed -n -e "${FROM_LINE},${TO_LINE} p" -e "${TO_LINE} q" ${FILE}

Это позволит отследить трассировки стека, содержимое REST API, структуры JSON и т. Д.

Для определенных приложений, таких как Hadoop Framework, у меня есть специальные сценарии для работы с их файлами журналов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...