unix文件日期转换自%m /%d /%Y

时间:2015-04-30 07:08:28

标签: date unix awk sed

在unix服务器上,我有一个文件,其中包含以下格式的数据:

4/1/2014,text1,text2,text3,text4
4/1/2014,....
...
...
4/20/2014,text1,text2,text3,text4
4/21/2014,...
...
...
10/14/2014,text1,text2,text3,text4
10/15/2014,...
...
...

需要按以下格式转换此完整文件:

2014-04-01,text1,text2,text3,text4
2014-04-01,....
...
...
2014-04-20,text1,text2,text3,text4
2014-04-21,...
...
...
2014-10-14,text1,text2,text3,text4
2014-10-15,...
...
...

请告知解决方案。

2 个答案:

答案 0 :(得分:0)

这应该做:

awk -F, '{split($1,a,"/");$1=a[3]"-"sprintf("%02d",a[1])"-"sprintf("%02d",a[2])}1' OFS=, file
2014-04-01,text1,text2,text3,text4

答案 1 :(得分:0)

sed '\#^[0-9]\{1,2\}/[0-9]\{1,2\}/[0-9]\{4\}# {
        s#^\([^/]*\)/#0\1-0#;s#/#-#
        s/^0*\([0-9]\{2\}-\)0*\([0-9]\{2\}\)-\([0-9]\{4\}\)/\3-\1\2,/
        }' YourFile

如果需要,只需重新格式化并处理额外的0,使用过滤器(如果所有行都有此选项,则为optionnal)以限制此开始日期。