Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 从日期字符串获取划时代的时间_Bash_Macos_Bsd - Fatal编程技术网

Bash 从日期字符串获取划时代的时间

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:

我有一个这样输出日期的流程(请注意日期前面的填充(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: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