LINUX.ORG.RU

Сортировка дат


0

2

Добрый день, коллеги! Работаю сейчас над такой задачей - дан файл с таким вот списком:

22-FEB-2005 O 21-MAR-2005 E 09-MAR-2004 E 11-SEP-2005 E 24-MAR-2007 E 06-MAR-2006 E 04-FEB-2005 I 02-MAR-2005 I 20-JAN-2002 I 12-DEC-2010 O 01-OCT-2009 O

необходимо отсортировать его по дате - не могу сообразить как правильно реализовать это, подскажите пожалуйста!


все просто:

1) выделить год, месяц, день

2) все перевести в одинаковый числовой формат: год ГГГГ, месяц ММ, день ДД

3) записать в строку по шаблону: «ГГГГММДД»

4) сортировать массив строк, полученных на этапе 3)

5) профит

</thread>

bvn13 ★★★★★
()
sort -t- -k3 -k2M -k1
anonymous
()

В MJD преобразуй. Или в Unix Time, если тебе в прошлое лезть не надо.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от tzarq
date --date=22-FEB-2005 +%s
1109019600

date --version
date (GNU coreutils) 8.20
Copyright (C) 2012 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или новее <http://gnu.org/licenses/gpl.html>
Это свободное ПО: вы можете продавать и распространять его.
Нет НИКАКИХ ГАРАНТИЙ до степени, разрешённой законом.

Автор программы -- David MacKenzie.

Eddy_Em ☆☆☆☆☆
()

хочу отсортировать по месяцам для начала, ввожу

sort -t- -k 2M file_name

он упорно выдает ошибку и все. Убираю «M» он работает, но не сортирует по месяца(( получаеся таки прийдется преобразовывать месяца в цифры?..

tzarq
() автор топика
Ответ на: комментарий от tzarq

Ну, видимо, -M не поддерживается (она вряд ли посиксовая).

Как вариант, если --date позволяет: xargs -I{} date --date={} +%s:{} | sort | cut -d: -f2-

anonymous
()

Ребят, спасибо большое всем кто откликнулся, все задачу решил!

tzarq
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.