Shell 更改日期格式的awk命令

Shell 更改日期格式的awk命令,shell,Shell,我有一个包含以下记录的文件: **cat Date.txt** SEPT,30-SEP-2017 MARCH,30-MAR-2018 JULY,30-JUL-2017 DECEM,30-DEC-2017 AUGS,30-AUG-2017 我希望输出为: SEPT,20170930 MARCH,20180330 JULY,20170730 DECEM,20171230 AUGS,20170830 我已经完成了一个带有while循环的脚本,如下所示

我有一个包含以下记录的文件:

**cat Date.txt**
SEPT,30-SEP-2017
MARCH,30-MAR-2018
JULY,30-JUL-2017
DECEM,30-DEC-2017
AUGS,30-AUG-2017
我希望输出为:

    SEPT,20170930
    MARCH,20180330
    JULY,20170730
    DECEM,20171230
    AUGS,20170830
我已经完成了一个带有while循环的脚本,如下所示

    cat Date.txt > /tmp/exp.part
    while read line
    do
    Dat=$(echo $line | awk -F , '{print $1}')
    DatNew=$(date -d $Exp +%Y%m%d)
    echo $DatNew
    done < /tmp/exp.part
cat Date.txt>/tmp/exp.part
读行时
做
Dat=$(echo$行| awk-F,{print$1})
DatNew=$(日期-d$Exp+%Y%m%d)
echo$DatNew
完成

我想知道我是否可以通过awk命令来完成,而不是编写while循环。

在awk中使用系统命令的一种方法: 输入文件:

$ cat file
27-SEP-2017
28-MAR-2018
27-JUL-2017
27-DEC-2017
29-AUG-2017


$ awk '{system("date -d " $0 " +%Y%m%d")}' file
20170927
20180328
20170727
20171227
20170829
$ cat file
SEP,27-SEP-2017
MAR,28-MAR-2018
JUL,27-JUL-2017
DEC,27-DEC-2017
AUG,29-AUG-2017


$ awk -F, '{system("date -d " $2 " +%Y%m%d")}' file
20170927
20180328
20170727
20171227
20170829
对于更新的输入文件:

$ cat file
27-SEP-2017
28-MAR-2018
27-JUL-2017
27-DEC-2017
29-AUG-2017


$ awk '{system("date -d " $0 " +%Y%m%d")}' file
20170927
20180328
20170727
20171227
20170829
$ cat file
SEP,27-SEP-2017
MAR,28-MAR-2018
JUL,27-JUL-2017
DEC,27-DEC-2017
AUG,29-AUG-2017


$ awk -F, '{system("date -d " $2 " +%Y%m%d")}' file
20170927
20180328
20170727
20171227
20170829
更新后的要求:

$ cat file
SEPT,30-SEP-2017
MARCH,30-MAR-2018
JULY,30-JUL-2017
DECEM,30-DEC-2017
AUGS,30-AUG-2017

$ awk -F, '{cmd="date -d "q $2 q" "s"+%Y%m%d"s; cmd|getline x;print $1,x}'  dq='"' sq="'"  OFS=, file
SEPT,20170930
MARCH,20180330
JULY,20170730
DECEM,20171230
AUGS,20170830

您能打印您的准确输入文件内容吗?$cat文件2017年9月27日2017年3月28日2018年7月27日2017年12月27日2017年8月29日2017年8月29日$awk'{系统(“日期-d”$0“+%Y%m%d”)}'文件日期:无效日期<代码>2017年9月27日<日期:无效日期<代码>2018年3月28日<日期:无效日期<代码>2017年7月27日<日期:,2017年12月27日“日期:无效日期”2017年8月29日“您能更好地格式化您的内容吗?”?我不知道整个内容是在同一行还是在不同的行?更新了solutionPerfect,但我也想要第一列。这将是:20170927年9月