如何在csv列中将日期格式从mmddyy转换为mm / dd / yyyy并保存到shellscript中的同一列

问题描述 投票:0回答:1

我有一个mmddyy日期列的csv文件(例如:090718)。我需要将它转换为mm / dd / yyyy(例如:09/07/2018)并使用shell脚本保存回csv中的同一列

shell unix
1个回答
1
投票

假设您的问题只是按以下方式重新格式化日期字符串:隔离2位数组并在最后一组之前添加“20”(2位数的日期无论如何都不足以猜测世纪)。

假设日期列是由;分隔的其他列。

例如input.csv

data_l1c1;110918;data_l1c3
data_l2c2;090718;data_l2c3

然后一个简单的GNU sed替换将是:

sed -i -E "s/;(.{2})(.{2})(.{2});/;\1\/\2\/20\3;/g" input.csv
  • ;(.{2})(.{2})(.{2});;之间找到3组,每组2个字符
  • 替换字符串是;\1\/\2\/20\3;找到的每个组都标记为:\ 1表示找到的第一组两位数,...,\ 3表示第三组。根据您的问题陈述,这些组中的每一个应该以/分隔(斜杠必须受到保护,因此它们显示为\/),最后一组\ 3前面带有“20”。
  • -i表示“就地”,因此替换源中替换字符串找到的表达式(文件input.csv被修改)。
© www.soinside.com 2019 - 2024. All rights reserved.