2013-03-12 35 views
0

我有一個CSV文件中讀取類似:如何在CSV文件中將時間戳從MMDDYYYY更改爲YYYYMMDD?

"Name","Payment",...,"DATE" 
"Mike","40",...,"12252012" 
"Jack","55",...,"01162013" 
... 

該文件包含大約幾千個這樣的列表。還有一些字段的值可能是8位或更長的數字。有一件事是確定的:DATE字段是最後一列。

如何將其中的DATE列從MMDDYYYY更改爲YYYYMMDD格式?

在Korn Shell中更好。

謝謝。

回答

2

編輯:如果日期字段總是最後一個成一排,你可以使用:

cat file.csv | perl -pe 's/(.*,")(\d{2})(\d{2})(\d{4})"/$1$4$2$3"/' 

perl -p -i -e 's/(.*,")(\d{2})(\d{2})(\d{4})"/$1$4$2$3"/' file.csv 

如果CSV有八隻有一個字段或更多數字:

使用Perl:

cat file.csv | perl -pe 's/(\d\d)(\d\d)(\d\d\d\d)/$3$1$2/' 

或更短(代替編輯文件):

perl -p -i -e 's/(\d{2})(\d{2})(\d{4})/$3$1$2/' file.csv 
+0

感謝您的溶液。但如何處理任何其他列有8位數字的可能性?但有一個標準:DATE始終是最後一列。 – 2013-03-12 20:08:58

+1

我編輯了答案 - 現在它查找最後一個字段。 – kamituel 2013-03-12 20:16:44

+0

謝謝,但它看起來最後的報價是失去了? – 2013-03-12 20:22:02

相關問題