在unix中的固定位置插入逗号分隔符

时间:2015-10-07 10:43:02

标签: string csv

我有一个csv文件,前几个字符是YYYYMMDD-HHMMSS格式 e.g。

20150710-071458source,data1,data2,data3
20150710-091458source,data1,data2,data3
20150810-101458source,data1,data2,data3
20150910-103058source,data1,data2,data3

我想将第一个字段拆分为新列以进行进一步处理。预期结果将是

2015,07,10,07,14,58,source,data1,data2,data3
2015,07,10,09,14,58,source,data1,data2,data3
2015,08,10,10,14,58,source,data1,data2,data3
2015,09,10,10,30,58,source,data1,data2,data3

如何将逗号插入固定位置?有人建议使用sed。但我找不到确切的参数。有人可以帮助使用sed,awk,切割什么吗?非常感谢你! ^ _ ^

2 个答案:

答案 0 :(得分:0)

如果您想使用sed,可以这样做:

centos6:~-> echo 20150710-071458source,data1,data2,data3 | sed 's/.\{4,4\}/&,/;s/.\{7,7\}/&,/;s/-/,/;s/.\{13,13\}/&,/;s/.\{16,16\}/&,/;s/.\{19,19\}/&,/'
2015,07,10,07,14,58,source,data1,data2,data3
centos6:~->

答案 1 :(得分:0)

这也不是很好,但它有效......

cat test.file | awk '{print substr($1, 0, 8)","substr($1, 10, 2)","substr($1, 12, 2)","substr($1, 14, 2)","substr($1, 16)}';