is there a way to convert month number to name?
example:
2013-10-22 will become Oct 22
I don't have the GNU date and my OS is AIX.
if you only need to map a few keys to values , just use an array
#!/bin/ksh ## cmdline argument is e.g. "2003-10-22" DATE=$1 ### extract day, month and year into separate variables MONTHDAY=${DATE#*-} YEAR=${DATE%%-*} MONTH=${MONTHDAY%%-*} DAY=${MONTHDAY#*-} # an array to look up th month-names # since month-numbers start with 1, the first element in the array is invalid. set -A monthnames invalid Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ## perform the lookup MONTHNAME=${monthnames[${MONTH}]} ## display "<Month> <DAY>" echo ${MONTHNAME} ${DAY} GNU date:
$ date -d 2013-10-22 '+%b %-d' Oct 22 OS X and FreeBSD date:
$ date -jf %F 2013-10-22 '+%b %-d' Oct 22 %b is an abbreviated month name and %B is a full month name.
LC_NAME=en_US date -d 1980-03-01 '+%b' to force English month names. With a recent enough version of ksh:
$ printf "%(%a %b %d %Y)T\n" 2013-10-22 Tue Oct 22 2013 (note that it is locale aware, in a Spanish locale for instance, it will output mar oct 22 2013)