sort Linux не сортирует дату по ключу -М
Есть такая проблема при использовании команды sort. Есть файл с таким содержимым:

И мне надо выполнить сортировку по дате, но она все равно делается по алфавиту:

Как это исправить?
Ответы (1 шт):
опция -M — это сортировка по месяцам: (unknown) < 'JAN' < ... < 'DEC'.
для вашего случая надо преобразовать интересующее вас поле так, чтобы данные в нём были записаны в «естественном» порядке: сначала более значимые, затем менее.
т.е., чтобы вместо число/месяц/год было год/месяц/число.
и потом уже отсортировать по данному полю.
например, такое преобразование можно сделать с помощью программы sed:
$ cat файл
proc 11/09/1999
bin 25/06/2001
boot 06/01/1999
etc 17/08/1987
var 20/02/1999
$ cat файл | sed -r 's,([0-9]{2})/([0-9]{2})/([0-9]{4}),\3/\2/\1,' | sort -k 2
etc 1987/08/17
boot 1999/01/06
var 1999/02/20
proc 1999/09/11
bin 2001/06/25
при необходимости поле можно преобразовать и «назад», к требуемому «неестественному» порядку:
$ cat файл | sed -r 's,([0-9]{2})/([0-9]{2})/([0-9]{4}),\3/\2/\1,' | sort -k 2 | sed -r 's,([0-9]{4})/([0-9]{2})/([0-9]{2}),\3/\2/\1,'
etc 17/08/1987
boot 06/01/1999
var 20/02/1999
proc 11/09/1999
bin 25/06/2001