Bash 从日期字符串获取划时代的时间
我有一个这样输出日期的流程(请注意日期前面的填充(4): 我想获得划时代的时间,所以我尝试:Bash 从日期字符串获取划时代的时间,bash,macos,bsd,Bash,Macos,Bsd,我有一个这样输出日期的流程(请注意日期前面的填充(4): 我想获得划时代的时间,所以我尝试: echo "Mon Jun 4 17:53:42 2018" | xargs -0 date -j -f "%a %b %d %T %Y" +%s 这确实管用,但留给我的是恼人的: Warning: Ignoring 1 extraneous characters in date string ( ) 我可以接受警告,但我已尝试使用sed删除双间距: echo "Mon Jun 4 17:53:
echo "Mon Jun 4 17:53:42 2018" | xargs -0 date -j -f "%a %b %d %T %Y" +%s
这确实管用,但留给我的是恼人的:
Warning: Ignoring 1 extraneous characters in date string (
)
我可以接受警告,但我已尝试使用sed删除双间距:
echo "Mon Jun 4 17:53:42 2018" | sed -E 's/\ +/\ /g'
返回:
Mon Jun 4 17:53:42 2018
但是,当我尝试将其转换为日期格式时,我再次收到警告(好像
sed
没有起作用)。问题不是空格,而是换行符。我删除了sed
,并替换为tr-d”\n“
,以删除有问题的字符:
echo“2018年6月4日星期一17:53:42”| tr-d“\n”| xargs-0日期-j-f“%a%b%d%T%Y”+%s
sed
工作正常-您告诉它删除所有相邻的空白,它就这样做了。是的,这就是我注意到的;但它没有解释为什么在将结果传输到xargs等时警告仍然存在。我是否缺少另一个无关字符?我手头没有BSD
,但我想date
可能对由echo
自动添加的新行有问题。请尝试将echo
替换为printf
。或者,如果您按照指定使用bash
:echo-n
。谢谢。问题在于一个无关的新行。(我应该在警告消息中发现这一点。)添加它的不是echo
,我只是在这里用它来说明问题。sed
毕竟是不需要的,因为date
似乎会忽略额外的空白。我用tr-d“\n”
Mon Jun 4 17:53:42 2018