Ich habe Hunderte von CSV-Dateien mit Datumsformat als% d /% m/% y% H:% M:% S, aber ich möchte, dass sie in das Format ändern% Y-% m-% d% H:% M:% SÄndern des Formats von% d /% m /% y zu% Y-% m-% d in einer CSV-Datei mit AWK unter Linux (UBUNTU)
INPUT_FILE.csv (date format == %d/%m/%y %H:%M:%S)
13/05/87 4:00:00,1.27470,1.27530,1.27460,1.27480,101926,356
14/05/87 4:01:00,1.27490,1.27520,1.27310,1.27490,102419,493
15/05/87 4:02:00,1.27490,1.27540,1.27440,1.27530,102846,427
16/05/87 4:03:00,1.27520,1.27570,1.27490,1.27550,103202,356
17/05/87 4:04:00,1.27550,1.27640,1.27510,1.27590,103528,326
......
......
......
24/02/09 4:00:00,1.27470,1.27530,1.27460,1.27480,101926,356
25/02/09 4:01:00,1.27490,1.27520,1.27310,1.27490,102419,493
26/02/09 4:02:00,1.27490,1.27540,1.27440,1.27530,102846,427
27/02/09 4:03:00,1.27520,1.27570,1.27490,1.27550,103202,356
28/02/09 4:04:00,1.27550,1.27640,1.27510,1.27590,103528,326
REQUIRED_OUTPUT.csv (date format == %Y-%m-%d %H:%M:%S)
1987-05-13 4:00:00,1.27470,1.27530,1.27460,1.27480,101926,356
1987-05-14 4:01:00,1.27490,1.27520,1.27310,1.27490,102419,493
1987-05-15 4:02:00,1.27490,1.27540,1.27440,1.27530,102846,427
1987-05-16 4:03:00,1.27520,1.27570,1.27490,1.27550,103202,356
1987-05-17 4:04:00,1.27550,1.27640,1.27510,1.27590,103528,326
......
......
......
2009-02-24 4:00:00,1.27470,1.27530,1.27460,1.27480,101926,356
2009-02-25 4:01:00,1.27490,1.27520,1.27310,1.27490,102419,493
2009-02-26 4:02:00,1.27490,1.27540,1.27440,1.27530,102846,427
2009-02-27 4:03:00,1.27520,1.27570,1.27490,1.27550,103202,356
2009-02-28 4:04:00,1.27550,1.27640,1.27510,1.27590,103528,326
ich ein paar AWK Variationen versucht haben, aber ich konnte es nicht zur Arbeit bringen. jede Hilfe
Update: mein Fehler, ich erwähnt haben sollte, dass die Daten oder Jahre von 1981-2016 beginnen
hier ist das, was ich bisher versucht haben:
awk -F, '{ gsub("/","-"); split($1, f, " "); print > ("my_data_" f[1]"v" ".csv")}' INPUT_FILE.csv
i-Dateien erhalten aufgeteilt in zB
my_data_13-05-87v.csv
my_data_14-05-87v.csv
my_data_15-05-87v.csv
mit Dateiinhalt wie unten
# for my_data_13-05-87v.csv
13-05-87 4:00:00,1.27470,1.27530,1.27460,1.27480,101926,356
# for my_data_14-05-87v.csv
14-05-87 4:01:00,1.27490,1.27520,1.27310,1.27490,102419,493
# for my_data_15-05-87v.csv
15-05-87 4:02:00,1.27490,1.27540,1.27440,1.27530,102846,427
HINWEIS: Die Jahre gehen von 1981 bis 2016
ich die Dateien in zB
my_data_1987-05-13v.csv
my_data_1987-05-13v.csv
my_data_1987-05-13v.csv
mit Dateiinhalt wie unten
# for my_data_1987-05-13v.csv
1987-05-13 4:00:00,1.27470,1.27530,1.27460,1.27480,101926,356
# for my_data_1987-05-14v.csv
1987-05-14 4:01:00,1.27490,1.27520,1.27310,1.27490,102419,493
# for my_data_1987-05-15v.csv
1987-05-15 4:02:00,1.27490,1.27540,1.27440,1.27530,102846,427
zweite Format FRAGE teilen möchten: Ich habe auch ein anderes Format
INPUT_FILE.csv (date format == %d.%m.%y %H:%M:%S)
13.05.1987 4:00:00.000,1.27470,1.27530,1.27460,1.27480,101926,356
14.05.1987 4:01:00.000,1.27490,1.27520,1.27310,1.27490,102419,493
15.05.1987 4:02:00.000,1.27490,1.27540,1.27440,1.27530,102846,427
16.05.1987 4:03:00.000,1.27520,1.27570,1.27490,1.27550,103202,356
17.05.1987 4:04:00.000,1.27550,1.27640,1.27510,1.27590,103528,326
REQUIRED_OUTPUT.csv (date format == %Y-%m-%d %H:%M:%S)
1987-05-13 4:00:00.000,1.27470,1.27530,1.27460,1.27480,101926,356
1987-05-14 4:01:00.000,1.27490,1.27520,1.27310,1.27490,102419,493
1987-05-15 4:02:00.000,1.27490,1.27540,1.27440,1.27530,102846,427
1987-05-16 4:03:00.000,1.27520,1.27570,1.27490,1.27550,103202,356
1987-05-17 4:04:00.000,1.27550,1.27640,1.27510,1.27590,103528,326
Was nächstes Jahr passiert? Abgesehen davon, dass du vermutlich diesen Kurs bestanden hast, musst du dir keine Sorgen machen. Allgemeiner gesagt, wenn Sie auf ein Datum stoßen, an dem das Jahr geschrieben wird 17, oder 27, 37, 47, 57, 67, 77 - wie sollen diese Daten in 2016, 2017, 2020, 2035 usw. abgebildet werden? Es gibt mehrere Möglichkeiten. –