可能重复:
Convert date formats in bash转换YYYY-MM-DDTHH:MM:SS +/- HH:在bash MM日期
我需要转换的日期,如
2012-06-01T19:05:00+02:00
到这样的东西
01-06-2012 19:05
理想情况下使用sed或awk。我该怎么做呢?
可能重复:
Convert date formats in bash转换YYYY-MM-DDTHH:MM:SS +/- HH:在bash MM日期
我需要转换的日期,如
2012-06-01T19:05:00+02:00
到这样的东西
01-06-2012 19:05
理想情况下使用sed或awk。我该怎么做呢?
echo "2012-06-01T19:05:00+02:00"|sed 's/\(.*\)T\([0-9]*:[0-9]*\).*/\1 \2/'
2012-06-01 19:05
要它做了什么:
完美的作品!非常感谢你。 :) – fabsh
date -d "$(echo '2012-06-01T19:05:00+02:00' | sed 's/T/ /; s/+.*//')" '+%d-%m-%Y %H:%M'
这可以在不使用sed或awk的情况下完成,因为bash本身可以完成大部分所需的字符串替换。具体来说,你只需要:
日期格式的其余部分可以通过日期命令处理。
$ 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
方括号在“T”周围并不是必需的。引号可以在参数扩展周围省略。 –
@丹尼斯威廉姆森你是对的。我本来有一个更复杂的表达,其中包括一个字符类。我已经提前删除了角色类,并且删除了其中一个原始替换表达式中的无用空格,以使意图更清晰。 –
对不起,但那并不告诉我该怎么做。我确实发现过这篇文章,但我很愚蠢的让它工作。 – fabsh
请通过显示为什么您尝试的操作不起作用来改进此类问题。否则,“男人1约会”是你的朋友。 –