如何使用sed命令删除短语后的数字和日期时间?

时间:2019-07-01 09:31:04

标签: regex sed

以下语法删除特定短语之后的所有内容:

s/\(.*\Build ID:.\).*/\1/g
s/\(.*\Build Date:.\).*/\1/g

但是我需要保护这部分代码并删除:

  • 特定词组后仅8位数字的日期时间
  • 特定词组之后的仅日期时间(YYYY-MM-DD空间HH:MM:SS)

输入:

Build ID: 14257823
Build Date: 2019-06-27 03:09:33

输出:

Build ID:
Build Date:

要仅剪切8位数字和时间戳,请使用:

s/[0-9]\{8\}//g s/[0-9]\{4\}\-[0-9]\{2\}\-[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//g

1 个答案:

答案 0 :(得分:0)

您可以使用字符类和重复量词。

示例中的构建ID格式为[0-9]\{8\}(字符类采用所有数字并将其重复8次),日期格式为[0-9]\{4\}\-[0-9]\{2\}\-[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}

  • 四位数
  • 连字符
  • 两位数
  • 连字符
  • 两位数
  • 空间
  • 两位数
  • 冒号
  • 两位数
  • 冒号
  • 两位数

这给出了以下正则表达式

s/\(.*Build ID:.\)[0-9]\{8\}/\1/g
s/\(.*Build Date:.\)[0-9]\{4\}\-[0-9]\{2\}\-[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}/\1/g