日期转换不起作用

时间:2011-12-24 13:07:21

标签: shell unix date sed

文件第二行的日期如下所示

  

12-24-11 13:37 (MM-YY-YY MM:SS)

我想将其转换为

  

Sat Dec 24 13:37:00 CET 2011

秒应始终为00

我使用此代码执行此操作

date="$(sed -n 2p $file)"
date="$(echo $date | sed 's#^\([0-9\-]\{5\}\)-\([0-9]\{2\}\)#\2-\1#')"
date="$(date -d $date)"

但是由于我不知道的原因这不起作用......有什么想法吗?

我总是得到错误:

  

日期:参数'13:37'缺少前导'+';
  当使用选项指定日期时,任何非选项
  参数必须是以“+”开头的格式字符串。

2 个答案:

答案 0 :(得分:3)

看起来您正在发送12-24-11 13:37,但您应该转义空格:12-24-11\ 13:37"12-24-11 13:37",以防止它将其解释为两个参数。

答案 1 :(得分:0)

这可能对您有用:

date=$(sed -n '2s/\(.*\)-\(..\) /date -d \2-\1\\ /p' file | sh )

或者如果您使用的是GNU sed:

date=$(sed -n '2s/\(.*\)-\(..\) /date -d \2-\1\\ /ep' file )