使用sed更改日期格式为

问题描述:

我需要使用sed将日期格式从dd/mm/yyyy更改为dd.mm.yyyy
我试图做这种方式:使用sed更改日期格式为

sed 's,[0-9][0-9]/[0-9][0-9],[0-9][0-9][0-9][0-9],[0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]' 

但是这显然是行不通的。我如何保持相同的日期,同时只切换期间的斜线。

你需要你的分隔符(逗号,在你的情况下,但通常是斜杠)在正确的地方。

您还需要反向引用。这些是在左侧包围(转义)括号,其可使用\ 1的右侧,\ 2项等

sed 's,\([0-9][0-9]\)/\([0-9][0-9]\)/\([0-9][0-9][0-9][0-9]\),\1.\2.\3,' 

也可以通过指示字符与数缩短的语法里面搭配(转义)括号:

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

为了您的具体情况,这将是简单的使用tr '/' '.'而不使用sed达到相同的效果。

+0

“{”和“}”需要转义才能使第二个调用工作。或者你可以使用扩展的正则表达式语法并编写'sed -r',([0-9] {2})/([0-9] {2})/([0-9] {4}), \ 1. \ 2. \ 3,'除此之外,发现。 – Wintermute 2015-02-07 00:29:28

+0

啊,对。固定。谢谢。另外,BSD系统上的sed -E(而不是sed -r)(至少OS X,总之)。 – 2015-02-07 00:39:47

+0

刚刚尝试过。完美的作品。谢谢 – user3344218 2015-02-07 01:07:54