Warum funktioniert dieses Gawk mit strftime nicht in SUSE, sondern auf Ubuntu und MAC


0

Hier habe ich $ 11 als String eingegeben und das funktioniert.

    gawk 'FS=\",\" {match($6,/([^\/])\/([^\/])\/([^\/]+)/,a); $11=sprintf(\"%d 
    %02d -%d 0 0 0\",a[3],a[1],1);$6=sprintf(\"%d-%02d-
    %02d\",a[3],a[1],a[2]);$6=strftime(\"%Y-%m-%d %H:%M:%S\",mktime(\"2017 08 
    -3 0 0 0\")); print $1,$2,$3,$4,$5,$6,$7,$8,$9,$11,\"".date("Y-m-d 
    H:i:s")."\"}' OFS=',' ./stock_File.csv > ./stock_File_DEMO.csv

Aber wenn ich das versuche

    gawk 'FS=\",\" {match($6,/([^\/])\/([^\/])\/([^\/]+)/,a); 
    $11=sprintf(\"%d %02d -%d 0 0 0\",a[3],a[1],1);$6=sprintf(\"%d-%02d-
    %02d\",a[3],a[1],a[2]);$6=strftime(\"%Y-%m-%d %H:%M:%S\",mktime($11)); 
    print $1,$2,$3,$4,$5,$6,$7,$8,$9,$11,\"".date("Y-m-d 
    H:i:s")."\"}' OFS=',' ./stock_File.csv > ./stock_File_DEMO.csv

Ich erhalte diesen Fehler in SUSE, aber nicht in UBUNTO oder MAC OSX El.

    fatal: strftime: second argument less than 0 or too big for time_t

Bitte nicht, dass dies $11=sprintf(\"%d %02d -%d 0 0 0\",a[3],a[1],1)nur eine Demo ist, da die 1 im realen Skript eine Shell-Variable ist und das gesamte Skript in PHP von exec ausgeführt wird. Ich habe das Problem auf das Kernproblem reduziert.

Meine Eingabedatei sieht folgendermaßen aus:

     "MERCK KGAA O.N.","MRK.DE",92.59,92.33,"-0.28%","8/7/2017",N/A,92.21,93.01
     "MUENCH.RUECKVERS.VNA O.N.","MUV2.DE",186.15,186.30,"+0.08%","8/7/2017",N/A,185.80,186.65
     "PROSIEBENSAT.1  NA O.N.","PSM.DE",34.240,34.105,"-0.394%","8/7/2017",5.260,34.015,34.305
     "RWE AG ST O.N.","RWE.DE",18.495,18.505,"+0.054%","8/7/2017",N/A,18.395,18.545
     "SAP SE O.N.","SAP.DE",91.44,91.06,"-0.42%","8/7/2017",N/A,90.99,91.51
     "SIEMENS AG NA","SIE.DE",111.55,111.60,"+0.04%","8/7/2017",N/A,111.45,112.25
     "THYSSENKRUPP AG O.N.","TKA.DE",25.41,25.59,"+0.73%","8/7/2017",0.54,25.48,25.73
     "VOLKSWAGEN AG ST O.N.","VOW.DE",131.95,131.35,"-0.45%","8/7/2017",N/A,131.00,131.95
     "VONOVIA SE NA O.N.","VNA.DE",35.900,35.765,"-0.376%","8/7/2017",N/A,35.685,36.000

Irgendwelche Ideen oder Hilfe für mich? VIELEN DANK


Als Erstes sollten Sie die Versionen der verschiedenen Dienstprogramme überprüfen. Während Ubuntu (zumindest zum Veröffentlichungszeitpunkt) eine ziemlich aktuelle Software enthält, tendieren einige andere Distributionen dazu, sich an viel ältere Versionen zu halten.
Magnet

Danke, aber Sie sagen mir, wie ich die Version von SUSE Gawk überprüfen kann?
Walter Schrabmair

Auf eine Ahnung gawk --version? Oder fragen Sie den Paketmanager, was er installiert hat.
Magnet

Wie kann ich unter SUSE Awk 4.1.0 API: 1.0 und unter Ubutnu GNU Akw 4.1.4 API: 1.1 meinen SUSE Gawk aktualisieren? Danke
Walter Schrabmair
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.