在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,...
...
...
请告知解决方案。
答案 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)以限制此开始日期。