Я разочарован тем, что в ответе не было предложено решение функции SQL-окна:
SELECT a.id, a.rev, a.contents
FROM (SELECT id, rev, contents,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY rev DESC) rank
FROM YourTable) a
WHERE a.rank = 1
Добавлено в SQL-стандарте ANSI / ISO Standard SQL: 2003 и более поздних версиях с ANSI / ISO Standard SQL: 2008, window ( или окна) доступны со всеми основными поставщиками сейчас. Существует множество типов ранговых функций, доступных для решения проблемы связи: RANK, DENSE_RANK, PERSENT_RANK
.
Для сортировки GNU: sort -k2M -k3n -k4
-k2M
сортируется по второму столбцу по месяцам (таким образом, «Март» предшествует «Апрелю») -k3n
сортируется по третьему столбцу в числовом режиме (так что «9» предшествует «10») -k4
сортируется по четвертому столбцу. Подробнее в руководстве .
немного не по теме, но в любом случае. только полезно при работе с файловыми файлами
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;
Вы можете использовать команду сортировки:
cat $logfile | sort -M -k 2
Это означает: Сортировать по месяцу (-M), начиная со второго столбца (-k 2).
дней требуется числовая (не лексическая) сортировка, поэтому она должна быть sort -s -k 2M -k 3n -k 4,4
Подробнее здесь .