[LINUX] Konvertieren Sie nur den Serienwert des Datums in der CSV-Datei mit awk

Einführung

Wenn ich auf eine bestimmte Web-API traf, war die Datumsinformation in den ausgespuckten CSV-Daten ein serieller Wert (warum?) Ich habe ein Skript erstellt, das eine bestimmte Spalte einer CSV-Datei mit awk konvertiert. Als Ausführungsumgebung habe ich Kali mit WSL von Windows 10 Pro verwendet.

Shell-Skript, das ich gemacht habe

test.sh


#~ Ausgelassen

cat ${output_dir}/tmp.csv | awk '{FS=",";OFS=","} NR>1{ $2=strftime("%Y-%m-%d", 
substr($2, 0, 10)) } 1' > ${output_dir}/result.csv

#Ausgelassen ~

Ergebnis

Es scheint, dass es vorerst funktioniert hat.

tmp.csv


No,Date,description,
1,1273645330000,TEST,
~

result.csv


No,Date,description,
1,2010-05-12,TEST,
~

awk Notizen

WSL


$ echo 1 2 | awk '{print $1}'
1
$ echo 1 2 | awk '{print $1} 1'
1
1 2
$ echo 1 2 | awk '{print $1} 0'
1
$ echo 1 2 | awk '{print $0}'
1 2
$ echo 1 2 | awk '{print}'
1 2
$ echo 1 2 | awk '1'
1 2
$ echo 1 2 | awk '{print $1} true'
1
$ echo 1 2 | awk '{print $1} false'
1

awk eingebaute Funktion strftime

Eine Funktion, die einen Zeitstempel in eine Zeichenfolge umwandelt, die für Menschen leicht zu verstehen ist, und diese zurückgibt. Diese Funktion scheint mit der C-Standardbibliothek von ANSI identisch zu sein.

Strftime-Funktion


strftime([format [, timestamp]])
Zeichen für die Konvertierungsbezeichnung Inhalt
%Y 4-stelliges westliches Kalenderjahr einschließlich des Jahrhundertteils.
%m Mond(Dezimalschreibweise).. Geben Sie von 01 bis 12 an.
%d Monatliches Gesamtdatum(Dezimalschreibweise).. Geben Sie von 01 bis 31 an.

awk eingebaute Funktion substr

Eine Funktion, die einen Teilstring der Länge beginnend mit dem Startzeichen in der Zeichenfolge zurückgibt.

substr(string, start [, length])

Andere

In diesem Skript habe ich die ursprünglichen CSV-Daten in eine neue CSV-Datei umgeleitet. Das Schreiben zum Überschreiben der ursprünglichen CSV-Datei wie unten gezeigt hat nicht funktioniert. Kann die ursprüngliche CSV-Datei, die von awk gesperrt ist, nicht überschrieben werden?

test.sh


#1
awk '{FS=",";OFS=","} NR>1{ $2=strftime("%Y-%m-%d", 
substr($2, 0, 10)) }1' ${output_dir}/tmp.csv > ${output_dir}/tmp.csv

#2
$(awk '{FS=",";OFS=","} NR>1{ $2=strftime("%Y-%m-%d", 
substr($2, 0, 10)) }1' ${output_dir}/tmp.csv) > ${output_dir}/tmp.csv

** $ () ** heißt "Befehlsersetzung (Posix-Spezifikation)" und scheint die Subshell aufzurufen. .. Sie können das Gleiche tun, indem Sie es in Anführungszeichen (``) setzen, aber es scheint, dass Sie es verschachteln können.

schließlich

Am Ende blieben die folgenden Fragen offen, aber das Ziel der Rückgabe der Seriennummer in der CSV wurde erreicht. Ich konnte die Verarbeitung implementieren, die ich machen wollte, aber es fühlt sich an, als hätte ich das Spiel gewonnen und das Spiel verloren lol Wenn Sie Folgendes wissen, würde ich es begrüßen, wenn Sie mir m (_ _) m beibringen könnten

  1. Das Problem, dass die CSV-Datei nicht durch die Kombination von awk und redirect überschrieben werden kann
  2. True / false funktioniert nicht zwischen} und einfachen Anführungszeichen im END-Block
  3. Gibt die Web-API Datumsinformationen als seriellen Wert zurück, um Fehler in Abhängigkeit von der Partnerumgebung zu vermeiden?

Referenz

Recommended Posts

Konvertieren Sie nur den Serienwert des Datums in der CSV-Datei mit awk
Konvertieren Sie UTF-8-CSV-Dateien in Excel
Batch-Konvertierung aller XLSX-Dateien im Ordner in CSV-Dateien
Konvertieren Sie in Python usw. geschriebene Dateien in PDF mit Syntax-Hervorhebung
Verschieben von CSV-Dateien mit Python Teil 1
Behandeln Sie CSV-Dateien mit Django (Django-Import-Export)
Behandeln Sie Excel-CSV-Dateien mit Python
Lesen Sie Dateien parallel zu Python
Erstellen Sie mehrere Benutzer mit Seriennummern gleichzeitig in Ansible Playbook: Teil 2
Laden Sie csv mit doppelten Spalten in Pandas
So konvertieren Sie csv in tsv in CLI
Konvertieren Sie mit pdfplumber von PDF in CSV
Lesen Sie alle CSV-Dateien im Ordner
Benennen Sie Dateien im Format JJJJMMTT in Seriennummern um
Lesen und Schreiben von CSV-Dateien mit Numpy
Konvertieren Sie PDF-Dateien mit GIMP in PNG-Dateien
Lesen von CSV-Dateien mit Pandas