sed 模式匹配日期

sed 模式匹配日期

我正在努力理解如何使用 sed 进行模式匹配。

在一个大文件中,我想将以下日期格式从 替换为 ,dd.mm.yyyy因此dd/mm/yyyy基本上将点替换为斜线。该文件包含所述格式的多个日期,但是,它不能更改句子末尾的句号等。

sed 's/\./\//g' <file_name> 

完成了工作但改变了每一个(.)所以我需要某种方式来执行模式匹配。

任何帮助,将不胜感激。

谢谢

答案1

这是做的工作:

sed 's/\([0-9][0-9]\)\.\([0-9][0-9]\)\.\([0-9]\{4\}\)/\1\/\2\/\3/g' file

解释:

s/                  # substitute
  \([0-9][0-9]\)    # group 1, 2 digits
  \.                # a dot
  \([0-9][0-9]\)    # group 2, 2 digits
  \.                # a dot
  \([0-9]\{4\}\)    # group 3, 4 digits
/
  \1                # content of group 1
  \/                # a slash
  \2                # content of group 2
  \/                # a slash
  \3                # content of group 3
/g                  # global flag

相关内容