文件第二行的日期如下所示
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'缺少前导'+';
当使用选项指定日期时,任何非选项
参数必须是以“+”开头的格式字符串。
答案 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 )