Sed:替换 ISO 日期中的 T 2016-12-30T09:42:14

Sed:替换 ISO 日期中的 T 2016-12-30T09:42:14

如何替换2016-12-30T09:42:14日期格式中的 T?

预期格式:2016-12-30 09:42:14

答案1

echo 2016-12-30T09:42:14 \
| sed 's/\([0-9]\{4\}-[0-9][0-9]-[0-9][0-9]\)T\([0-9][0-9]:[0-9][0-9]:[0-9][0-9]\)/\1 \2/'
  • [0-9]匹配任意数字
  • \{4\}表示前面的内容应该恰好出现 4 次(短于[0-9][0-9][0-9][0-9]
  • \(...\)\1创建一个捕获组,捕获组可以通过它们的编号(\2等)来引用

答案2

echo 2016-12-30T09:42:14 | sed -re 's/(-[0-9]{2})T([0-9]{2}:)/\1 \2/g'

-r意味着您不需要\'s -> 更易于阅读
-<two digits>T<two digits>:不太可能给出错误匹配

结果:更短且更易于维护。

答案3

我不确定你的输入文本是什么,但如果你确定你的格式看起来像你显示的那样,最简单的代码是

echo "2016-12-30T09:42:14" | sed -e 's/T/ /g'

相关内容