Сортировка журналов по дате в поле 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
Ответы
Ответ 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).