Ich habe eine Testdatei, die 4,5 GB ist und ich versuche, es zu formatieren.Verwenden Sie sed, um große Dateien zu formatieren
Zuerst versuche ich, die Registerkarten durch ',' zu ersetzen und auch jedes Spaltenfeld mit einem "
zu trennen.
Zweitens formatiere ich ein Datumsfeld in der Datei mit awk und sed. Hier
ist, was ich bin mit:
Für Formatierung:
cat test_sample.csv | sed -e 's/"/""/g' | sed -e 's/\t/","/g' | sed -e 's/$/"/g' | sed -e 's/^/"/' > test_sample.csv
Für Datum:
awk 'BEGIN{FS=OFS="\",\""} NR>1{cmd = "date -d \"" $10 "\" \"+%Y-%m-%d\"";cmd | getline out; $10=out; close("uuidgen")} 1' test_sample.csv > _report.tmp && mv _report.tmp test_sample.csv
Diese Befehle fein für kleine Dateien sind runnig aber scheitern und klärt alle die Daten in der Datei.
Kann mir bitte jemand helfen, diese Datei zu formatieren?
Haben (oder können Sie) GNU awk für Zeitfunktionen installieren? –
Sie müssen wahrscheinlich Datum und getline nicht aufrufen und so könnte Ihr Skript um Größenordnungen effizienter sein. Wenn Sie Ihre Frage so bearbeiten, dass sie eine übersichtliche, testbare Eingabe und die erwartete Ausgabe enthält, können wir Ihnen helfen. An dieser Stelle möchten Sie vielleicht eine separate Folgefrage stellen, da Sie bereits eine Antwort auf diese Frage akzeptiert haben. –