関数に日付を変数として渡しています。この日付を別の形式に変換したいです。はい
DT=2015-12-08
DT
Unixに変換したいです08-dec-2015
。
答え1
GNUの日付を仮定します(つまり、組み込まれていないLinux):
$ LC_TIME=C date --date=2015-12-08 +%d-%b-%Y
08-Dec-2015
答え2
組み込みのLinuxまたはより一般的にGNU Dateを持つシステムを使用している場合は、それを使用して任意の日付形式を指定できます。
LC_ALL=C date -d "$DT" +%d-%b-%Y | tr A-Z a-z
GNU日付がない場合(または存在する場合でも)、純粋なシェルでこれを行うことができます。
case $DT in
*-01-*|*-1-*) month=jan;;
*-02-*|*-2-*) month=feb;;
*-03-*|*-3-*) month=mar;;
*-04-*|*-4-*) month=apr;;
*-05-*|*-5-*) month=may;;
*-06-*|*-6-*) month=jun;;
*-07-*|*-7-*) month=jul;;
*-08-*|*-8-*) month=aug;;
*-09-*|*-9-*) month=sep;;
*-10-*) month=oct;;
*-11-*) month=nov;;
*-12-*) month=dec;;
esac
echo "${DT##*-}-$month-${DT%%-*}"