想在awk命令中使用linux命令

时间:2016-04-20 05:18:26

标签: linux awk

 awk -F, '{"date -d \"$1\" +%s"|getline b;{print $1 "," b} }' test.csv

上面是我的awk command,我想使用来自文件的输入并将其转换为毫秒。但是当我使用它时,它会以毫秒为单位显示当前日期转换,而不是从文件中转换特定输入。

这是我的文件数据; - test.csv

31-JAN-2012
06-JUL-2009
03-OCT-2011
03-OCT-2011
03-OCT-2011
03-OCT-2011
03-OCT-2011

2 个答案:

答案 0 :(得分:2)

使用GNU mktime中的非标准awk函数:

BEGIN {
    FS="-"
    split("JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC", month)
    for (i in month) {
        month[month[i]]=i
    }
}
{
    print mktime($3" " month[$2] " "$1" 00 00 00") "000," $0
}

答案 1 :(得分:1)

首先,Provider命令不支持毫秒,date 。如果您确定消费程序可以处理毫秒级的准确度,您可以简单地将+%s添加到000的结果中,以伪造该准确性。

正确的date +%命令是:

awk

毫秒精度

awk -F, '{"date -d"$1" +%s"|getline b; print $1 "," b}' test.csv
相关问题