转换为YYYY-MM-DDTHH:MM:SS +/- HH:MM日期为bash

fab*_*bsh 1 bash awk date sed

可能重复:
在bash中转换日期格式

我需要转换日期,如

2012-06-01T19:05:00+02:00
Run Code Online (Sandbox Code Playgroud)

这样的事情

01-06-2012 19:05
Run Code Online (Sandbox Code Playgroud)

理想情况下使用sedawk.我该怎么做呢?

Tod*_*obs 5

这可以在不使用sed或awk的情况下完成,因为bash本身可以执行大多数必需的字符串替换.具体来说,您只需要:

  1. 用空格替换T,然后
  2. 删除您的时区信息.

日期格式的其余部分可以由date命令处理.

$ date_string='2012-06-01T19:05:00+02:00'
$ date_string="${date_string/T/ }"
$ date_string="${date_string/+*/}"
$ date -d "$date_string" '+%d-%m-%Y %H:%M'
01-06-2012 19:05
Run Code Online (Sandbox Code Playgroud)