awk:格式化日期字符串,从YYYYMMDD到YYYY-MM-DD

时间:2014-03-18 07:00:40

标签: linux string bash awk format

我有一个CSV文件,我使用awk解析,因为我不需要所有列。 我遇到的问题是,一列是日期,但格式为YYYYMMDD,但我需要YYYY-MM-DD,我不知道如何实现。

我已经尝试使用split($27, a),但它没有将其拆分 - 所以a[0]会返回整个字符串。

2 个答案:

答案 0 :(得分:3)

您可以使用substr

printf "%s-%s-%s", substr($27,0,4), substr($27,5,2), substr($27,7,2)

假设27 th 字段为20140318,则会产生2014-03-18

答案 1 :(得分:2)

使用awk输出作为date -d的输入,例如

$ date -d 20140918 +'%Y-%m-%d'
2014-09-18