2015-02-07 107 views
0

我需要使用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

你需要你的分隔符(逗號,在你的情況下,但通常是斜槓)在正確的地方。

您還需要反向引用。這些是在左側包圍(轉義)括號,其可使用\ 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