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
感谢您的帮助。
答案 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]指的是包含您要转换的日期的文件。