我正在努力理解如何使用 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