免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1333 | 回复: 4
打印 上一主题 下一主题

[Linux] 对文件中第一列的日期修改样式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-21 15:32 |只看该作者 |倒序浏览
例如:a.csv的内容如下
08/20/2013,00:00:00,  0.35,  0.19,  0.15, 99.64,  0.00,  0.03, 10.16,          0,     0.00,
08/20/2013,00:05:00,  0.35,  0.20,  0.15, 99.63,  0.00,  0.02, 10.15,          0,     0.00,
我要把它变成
2013/08/20,00:00:00,0.35,0.19,0.15,99.64,0.00,0.03,10.16,0,0.00,
2013/08/20,00:05:00,0.35,0.20,0.15,99.63,0.00,0.02, 10.15,0,0.00,

我的要求很简单:一。先去掉里面的所有空格  二。对第一列的日期格式化
第一步很好实现 sed -e 's/ //g' a.csv就可以  问题在第二步
小女初学linux,请高手帮忙解答,万分感谢

论坛徽章:
0
2 [报告]
发表于 2013-08-21 15:56 |只看该作者
唉 咋没人回复啊
自己跟一个吧
以前我也做过日期的转换是这样做的
file_date=20130502
start_end_date=${file_date:4:2}/${file_date:6:2}/${file_date:0:4}
转换后是05/02/2013
这只是对单个变量做转换,现在是要把文件中的数据做转换 不知道怎么写了

   

论坛徽章:
17
处女座
日期:2013-08-27 09:59:352015亚冠之柏太阳神
日期:2015-07-30 10:16:402015亚冠之萨济拖拉机
日期:2015-07-29 18:58:182015年亚洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥猪
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56双子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
3 [报告]
发表于 2013-08-21 16:53 |只看该作者
回复 1# shasha206

使用awk
  1. echo "08/20/2013,00:00:00,  0.35,  0.19,  0.15, 99.64,  0.00,  0.03, 10.16,          0,     0.00," | tr -d [:space:] | awk -F',' '{for(i=1;i<NF;i++){val=$i;if(i==1){split(val,arr,"/");printf("%s/%s/%s,",arr[3],arr[1],arr[2]);}else printf("%s,",val);}printf("\n");}'
复制代码
使用sed
  1. echo "08/20/2013,00:00:00,  0.35,  0.19,  0.15, 99.64,  0.00,  0.03, 10.16,          0,     0.00," | tr -d [:space:]  | sed 's/\([0-9]\+\)\/\([0-9]\+\)\/\([0-9]\+\)/\3\/\1\/\2/g'
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-08-21 17:03 |只看该作者
本帖最后由 shasha206 于 2013-08-21 17:07 编辑

多谢大侠了,真棒 特别是下面用正则的方法。

论坛徽章:
0
5 [报告]
发表于 2013-08-23 10:05 |只看该作者
echo "08/20/2013,00:00:00,  0.35,  0.19,  0.15, 99.64,  0.00,  0.03, 10.16,          0,     0.00" | tr -d [:space:]|awk -F"[/,]" '{printf("%s/%s/%s,",$3,$1,$2);for(i=4;i<NF;i++){printf("%s,", $i);}printf("\n");}'
不过用sed处理简单多了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP