Подтвердить что ты не робот

Сортировка журналов по дате в поле bash

пусть

126 Mar  8 07:45:09 nod1 /sbin/ccccilio[12712]: INFO: sadasdasdas
  2 Mar  9 08:16:22 nod1 /sbin/zzzzo[12712]: sadsdasdas
  1 Mar  8 17:20:01 nod1 /usr/sbin/cron[1826]: asdasdas
  4 Mar  9 06:24:01 nod1 /USR/SBIN/CRON[27199]: aaaasdsd
  1 Mar  9 06:24:01 nod1 /USR/SBIN/CRON[27201]: aaadas

Я хотел бы отсортировать этот вывод по дате и времени.

Большое спасибо.

Martin

4b9b3361

Ответ 1

Для сортировки GNU: sort -k2M -k3n -k4

  • -k2M сортируется по второму столбцу по месяцам (таким образом, "Март" предшествует "апрелю")
  • -k3n сортируется по третьему столбцу в числовом режиме (так что "9" доходит до "10")
  • -k4 сортируется по четвертому столбцу.

Подробнее см. В руководстве.

Ответ 2

days требуется числовая (не лексическая) сортировка, поэтому она должна быть sort -s -k 2M -k 3n -k 4,4

Подробнее здесь.

Ответ 3

немного не по теме, но в любом случае. только полезно при работе с файловыми файлами

ls -l -r --sort=time

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

ls -l -r --sort=time | grep backup | head -n1 | while read line; do oldbackup=\`echo $line | awk '{print$8}'\`; rm $oldbackup; done;

Ответ 4

Вы можете использовать команду сортировки:

cat $logfile | sort -M -k 2

Это означает: Сортировка по месяцу (-M), начиная со второго столбца (-k 2).