Как отформатировать дату в сценарии KornShell в формате DD-MON-YYYY?

Как отформатировать дату в сценарии KornShell (ksh) в формате DD-MON-YYYY?

Я пробовал следующее:

date '+%d-%h-%Y'

Он возвращает 04-Nov-2009. Мне нужно, чтобы ноябрь был NOV (все заглавные буквы). Можно ли это сделать с помощью утилиты даты?


person AieshaDot    schedule 04.11.2009    source источник


Ответы (3)


Это то, что наконец сработало на unix (solaris).

date '+%d-%h-%Y' | tr [:lower:] [:upper:]

возвращено: 04 ноября 2009 г.

person AieshaDot    schedule 04.11.2009

Символ ^ задает прописные буквы в GNU coreutils date (по крайней мере, в версии 6.9.92.4 coreutils):

$ date '+%d-%^h-%Y'
04-NOV-2009

К сожалению, ^ не является стандартом POSIX для date , поэтому вам, вероятно, придется прибегнуть ко второй команде, такой как tr предложено @martin Clayton, если вы не используете систему GNU.

person Mark Rushakoff    schedule 04.11.2009
comment
@Mark Rushakoff - это не работает ни на uxix, ни на linux. При выполнении я получаю следующее: 04-^Nov-2009. - person AieshaDot; 05.11.2009
comment
Предложено выше? Пожалуйста, укажите конкретный ответ. Заказы меняются при голосовании, - person S.Lott; 05.11.2009

Вы можете прописать его самостоятельно, если верхний регистр не поддерживается в вашей среде:

date '+%d-%h-%Y' | tr 'a-z' 'A-Z'
person martin clayton    schedule 04.11.2009
comment
@martin Clayton - этот синтаксис работал в Linux, но не в Unix, и мой скрипт работает в системе Unix. Однако ваш фрагмент кода указал мне правильное направление. Спасибо! - person AieshaDot; 05.11.2009