bash: сортировать по датам [дубликат]

Я разочарован тем, что в ответе не было предложено решение функции 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.

16
задан Mejmo 9 March 2011 в 09:14
поделиться

4 ответа

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

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

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

30
ответ дан Toby Speight 5 September 2018 в 10:42
поделиться

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

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;
5
ответ дан Baz 5 September 2018 в 10:42
поделиться

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

cat $logfile | sort -M -k 2

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

3
ответ дан bmk 5 September 2018 в 10:42
поделиться
Для

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

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

6
ответ дан Enamul Hassan 5 September 2018 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: