如何将以下日期更改为2个特定表格? (linux终端/ shell)

时间:2017-04-05 15:55:29

标签: linux shell terminal sh

如果我输入"日期"在linux终端上,它显示

  

Wed Apr 5 11:00:29 EDT 2017

我的问题是有没有办法在以下两种形式中显示它?仅使用" date"命令或shell脚本?

17 - 4月 - 5月结婚

  • wed全是小写
  • 17-April-5是年 - 月 - 日表格

17-4-5 WED

  • WED全是大写
  • 17-4-5是年 - 月 - 日表格

2 个答案:

答案 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