【问题标题】:Is there a way to add the seconds to a time stamp if it is not present?如果时间戳不存在,有没有办法将秒添加到时间戳中?
【发布时间】:2019-07-07 19:54:16
【问题描述】:

我有一个贯穿地图的数据文件。其中一个字段读取日期/时间戳。该地图设置为读取 MM/DD/YYYY HH:MM:SS,并且大多数情况下都可以使用。有时时间格式不正确,并且未提供 :SS。

正确数据: ,1/11/2019 13:53:46,

不正确的数据: ,1/16/2019 11:27,

这是一个旧的 AIX 5.3 机器。我尝试了一些 sed 命令和一些 awk 命令,但都没有成功。

 sed 's/[0-9][0-9]:[0-9][0-9],/[0-9][0-9]:[0-9][0-9]:00,/g' 

我需要看看 ,1/16/2019 11:27:00,

但我得到了 ,1/16/2019 [0-9][0-9]:[0-9][0-9]:00,

【问题讨论】:

  • 试试sed -E 's/( [0-9]{2}:[0-9]{2}),/\1:00,/g'sed 's/\( [0-9][0-9]:[0-9][0-9]\),/\1:00,/g'
  • 谢谢,sed 's/( [0-9][0-9]:[0-9][0-9]),/\1:00,/g' 完美.

标签: regex sed aix


【解决方案1】:

你可以使用

sed 's/\( [0-9][0-9]:[0-9][0-9]\),/\1:00,/g'

模式匹配:

  • \( [0-9][0-9]:[0-9][0-9]\) - 捕获组 1(该值在替换模式中用 \1 引用):
    • - 空格
    • [0-9][0-9] - 两位数
    • : - 冒号
    • [0-9][0-9] - 两位数
  • , - 逗号

看到这个POSIX BRE regex online demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 2023-03-31
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多