Ich habe eine sehr große tabulatorgetrennte Datei (ungefähr 12 Millionen Zeilen), die so aussieht:
%Vor%Gibt es eine Möglichkeit, wie ich das machen kann:
%Vor%Ich habe versucht, sed-Skripte zu verwenden, aber es dauert so lange.
Zum Beispiel
%Vor%Ich könnte es in Excel mit
machen %Vor%und ziehen nach unten. Excel erlaubt mir jedoch nur eine bestimmte Anzahl von Zeilen zu laden.
(Angenommen, ich habe "F1" nach C1 kopiert)
Sicherlich gibt es einen einfacheren Weg mit awk oder sed?
Der Perl-Befehl würde etwa so aussehen:
%Vor%Lesbarer:
%Vor%Und dann:
%Vor%(Sie können auch das Flag "-i" verwenden, um die Datei "in Place" zu überschreiben, aber das spart Ihnen während der Laufzeit nicht wirklich Zeit und Speicherplatz.)
Trotzdem, wie lange Ihre Datei auch dauert, so lange dauert das.
Dies ist sed
Lösung:
Zeitverbrauch und Vergleich mit anderen awk-Lösungen
Dies ist Code zum Testen (Bash-Skript)
%Vor%und Ergebnisse (für 46kB Eingabedatei):
%Vor%Schlussfolgerungen
@Tanktalus perl
solution hat die beste Leistung, aber awk
@karakfa und awk
@Cyrus solutions kommen auch gut zurecht.
Offtopic
Diese sed
-Lösung hat die beste Leistung bei kleineren Dateien (aus diesem Beispiel und für 8k-Dateien), ist aber bei größeren Daten sehr langsam.