使用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达到相同的效果。
“{”和“}”需要转义才能使第二个调用工作。或者你可以使用扩展的正则表达式语法并编写'sed -r',([0-9] {2})/([0-9] {2})/([0-9] {4}), \ 1. \ 2. \ 3,'除此之外,发现。 – Wintermute 2015-02-07 00:29:28
啊,对。固定。谢谢。另外,BSD系统上的sed -E(而不是sed -r)(至少OS X,总之)。 – 2015-02-07 00:39:47
刚刚尝试过。完美的作品。谢谢 – user3344218 2015-02-07 01:07:54