如何格式化以下bash / sh / shell日期

时间:2016-05-19 15:12:11

标签: bash macos shell sh

  

如何格式化“2016年5月18日美国东部时间下午1:05:30”至+%Y-%m-%d   00:00:00

JayOSX:~ jay$ d=$(defaults read /Library/Preferences/com.someapp.some.plist LastUpdated)      
     回声“$ d”

##returns
May 18, 2016 at 1:05:30 PM EDT
     

我试过了:

date -j -f "%b %d, %Y at %l:%M:S %Z" "$(defaults read /Library/Preferences/com.someapp.some.plist LastUpdated)” + "%Y-%m-%d 00:00:00"

我收到了以下错误:

Failed conversion of ``%d,'' using format ``“%b''
date: illegal time format
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

1 个答案:

答案 0 :(得分:0)

你去,

创建infile.txt:

echo "May 18, 2016 at 1:05:30 PM EDT" > infile

现在我们有:

[za]$ cat infile.txt 
May 18, 2016 at 1:05:30 PM EDT

一个可以做到的班轮。仅供参考,"%s-%s-%s %s %s:%s:%s \n", $4 , $1 , $2 , $3 , $6 , $7 , $8是重新格式化的内容。

 [za]$ awk -F'[ "\t" :,]' '{printf "%s-%s-%s %s  %s:%s:%s  \n", $4 , $1 , $2 , $3  , $6 , $7 , $8  }' infile.txt

输出:

 2016-May-18   1:05:30 

快速测试。

echo May 18, 2016 at 1:05:30 PM EDT | awk -F'[ "\t" :,]' '{printf "%s-%s-%s %s  %s:%s:%s  \n", $4 , $1 , $2 , $3  , $6 , $7 , $8  }'

我希望这会有所帮助;)。