如果我输入"日期"在linux终端上,它显示
Wed Apr 5 11:00:29 EDT 2017
我的问题是有没有办法在以下两种形式中显示它?仅使用" date"命令或shell脚本?
17 - 4月 - 5月结婚
17-4-5 WED
答案 0 :(得分:1)
您可以使用date命令和tr完成所需的操作。我创建了一个带有parm($ 1)的脚本并将其转换(假设它是一个日期)到你想要的格式:
tmp()
{
d8out1="$(date -d $1 +%y-%B-%-d) $(date -d $1 +%a | tr [:upper:] [:lower:])"
echo $d8out1
d8out2=$(date -d $1 +"%y-%-m-%-d %^a")
echo $d8out2
}
日期格式使用以下选项:
%y -- Two digit year (use %Y (uppercase) for four digits)
%B -- Full month name (e.g., April)
%-m -- Month number -- the hyphen ("-") says do not pad the field (4 instead of 04)
%-d -- Day of month -- again, the hyphen suppresses padding
%a -- abbreviated weekday name (e.g. Wed) -- tr is then used to shift the case.
%^a -- abbreviated weekday name -- the caret ("^") says to upshift it
请注意,如果您不关心日期名称的情况,则可以在一个简单的语句中完成第一个版本,与第二个版本相同(当然,只有没有插入当天的插入符号)。
以下是几个示例运行:
> tmp 04/05/2017
17-April-5 wed
17-4-5 WED
> tmp 12/31/2017
17-December-31 sun
17-12-31 SUN
> tmp 11/30/1965
65-November-30 tue
65-11-30 TUE
希望这有帮助!
答案 1 :(得分:0)
$ date +"%g-%B-$(echo `date +%e`) $(date +%a|tr [:upper:] [:lower:])"
17-April-5 wed
$ date +"%g-$(date +%m|sed 's/^0//')-$(echo `date +%e`) $(date +%a|tr [:lower:] [:upper:])"
17-4-5 WED