2017-11-02 7 views
2

Ich habe Datei mit folgenden DatenWarum gibt mktime -1 in Awk zurück?

# 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 

Ich möchte eine Ausgabe wie diese

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" 

mein Skript ist:

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

Aber mktime() kehrt -1.

+1

Könnten Sie bitte Code-Tags für Ihre Proben verwenden, da dies überhaupt nicht klar ist. – RavinderSingh13

Antwort

6

Sie übergeben mktime eine Zeichenfolge mit doppelten Anführungszeichen und Leerzeichen am Anfang und Ende. Entferne diese.

$ 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 
Verwandte Themen