如何设置以下bash/sh/shell日期的格式

如何设置以下bash/sh/shell日期的格式,bash,macos,shell,sh,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” 我试过: date -j -f "%b %d, %Y at %l:%M:S %Z" "$(defaults read /Library/Preferences/com.someapp.

如何将“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”

我试过:

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]
给你

创建infle.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  }'

我希望这会有帮助

您尝试使用的引用,
,这些是您真正使用的引用吗?请注意区别:您的:
,正确的引用:
谢谢您的更正。我在实际环境中运行时使用了正确的引号。@jay您已经编辑了问题,以便报告的错误不再发生。您仍然有问题吗?没有,它仍然存在。使用awk可以这样做吗?当然有帮助,但我需要它输出为“2016-05-18 00:00:00”嗨,在我的mac电脑上,它打印的是“05”,而不是May.d=$(默认值为read/Library/Preferences/com.someapp.some.plist LastUpdated)2016-05-19 15:19:57.548默认值[11384:186690]…所以,请检查如何使源输出的格式正确。
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  }'