更改日期字符串格式

时间:2016-03-10 11:18:03

标签: bash awk sed

Hello Sed / Bash / Awk专家,

我的文件中包含以下格式的日期:

Feb 5 2015

Nov 25 2014

Apr 16 2015

我想要的是将它们转换为这种格式:

YYYY-MM-DD

所以他们应该是这样的:

2015-02-05

2014-11-25

2015-04-16

感谢您的帮助。

4 个答案:

答案 0 :(得分:7)

您可以简单地使用:

date -f dates.txt +%Y-%m-%d

-f选项中,您可以为输入文件提供每行一个日期。

答案 1 :(得分:4)

使用awk

awk 'BEGIN{x="  JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"}
     {printf "%04d-%02d-%02d\n",$3,index(x,toupper($1))/3,$2}' file

答案 2 :(得分:2)

date命令是你的朋友:

date --date="Feb 5 2015" +"%Y-%m-%d"
2015-02-05

所以,你可以说:

$ cat my_file | while read -r dt
> do
> date --date="${dt}" +"%Y-%m-%d"
> done
2015-02-05
2014-11-25
2015-04-16

答案 3 :(得分:1)

粘贴以下内容:

{
    month="00";
    mon=toupper($1);
         if(mon=="JAN") month="01";
    else if(mon=="FEB") month="02";
    else if(mon=="MAR") month="03";
    else if(mon=="APR") month="04";
    else if(mon=="MAY") month="05";
    else if(mon=="JUN") month="06";
    else if(mon=="JUL") month="07";
    else if(mon=="AUG") month="08";
    else if(mon=="SEP") month="09";
    else if(mon=="OCT") month="10";
    else if(mon=="NOV") month="11";
    else if(mon=="DEC") month="12";
    printf("%s-%s-%02d\n", $3, month, $2)
}

到文件中(我们将文件名称为[script_filename] 执行以下操作:     awk -F' ' -E [script_filename] [date_filename] 其中[date_filename]指的是包含您要转换的日期的文件。