从bash中的列转换日期

时间:2018-10-25 15:19:49

标签: linux bash awk sed

我的文件如下:

ModelTest.php

我希望它看起来像这样:

ID,DATE,NAME
1,10-17-18,John
2,10-12-18,Mary
3,10-19-18,David

如何在bash中做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:-1)

以','-F','为界。
跳过第一行(NR>1)
将日期字符串替换为/,gsub(/-/,"/",$2),以便日期能够识别格式 作为月/日/年。
转换日期格式,另存为变量d ("date +%Y-%m-%d -d"$2 | getline d)。 然后打印每个用逗号分隔的字段。

awk -F',' '(NR>1){gsub(/-/,"/",$2); ("date +%Y-%m-%d -d"$2 | getline d); print $1","d","$3}' file

要跳过带有空白日期的行,请在开头添加if($2=="") next;,如下所示:

awk -F',' '(NR>1){if($2=="") next; gsub(/-/,"/",$2); ("date +%Y-%m-%d -d"$2 | getline d); print $1","d","$3}' file