为什么mktime在Awk中返回-1?

时间:2017-11-02 11:03:31

标签: shell unix awk mktime

我有以下数据的文件

# date format in file is (YYYY MM DD HH MM SS)
 file_create_date       file_execute_date       file_name     
"2017 10 10 12 24 30" , "2017 10 11 09 23 00" , LTE--cNum--T201710110923--W101114450--CHGLSMR01LEMS1--sam--4.0.csv.gz

我想要这样的输出

 file_create_date       file_execute_date       difference          file_name     
"2017 10 10 12 20 30" , "2017 10 11 13 31 59" ,  "1 Day 01:11:29, "LTE--cNum--T201710110923--W101114450--CHGLSMR01LEMS1--sam--4.0.csv.gz"

我的脚本是:

awk -F',' '{print $1 "," , $2  , (mktime($2)-mktime($1))/86400 " Day",$3}' Filename

mktime()会返回-1

1 个答案:

答案 0 :(得分:6)

您在mktime传递了一个包含双引号和空白字符的字符串。删除那些。

$ echo '"2017 10 10 12 24 30" , "2017 10 11 09 23 00"'
"2017 10 10 12 24 30" , "2017 10 11 09 23 00"

$ echo '"2017 10 10 12 24 30" , "2017 10 11 09 23 00"' | awk -F',' '{print mktime($1)}'
-1

$ echo '"2017 10 10 12 24 30" , "2017 10 11 09 23 00"' | awk -F',' '{gsub(/\s*"\s*/,""); print mktime($1)}'
1507656270