如何在CSV文件中将时间戳从MMDDYYYY更改为YYYYMMDD?

时间:2013-03-12 20:00:58

标签: ksh

我有一个csv文件读取类似:

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

该文件包含大约数千个这样的列表。并且有一些字段的值可能是8位数或更长的数字。有一点是肯定的:DATE字段是最后一列。

如何将其中的DATE列从MMDDYYYY更改为YYYYMMDD格式?

Korn Shell更好。

感谢。

1 个答案:

答案 0 :(得分: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