Etwas an den Anfang einer sehr großen Textdatei einfügen
Hallo Liste, ich habe hier ein 6GB Textfile. An den Anfang der Datei muss etwas eingefügt werden. Normalerweise ein Job für einen Editor. Eine 6GB Datei zu laden dauert aber "etwas" ... und ist nicht gerade performant. Eine Lösung, die ich sonst manchmal verwende, ist hier auch nicht besonders geeignet, weil dann schon 12GB benötigt werden (wenigstens kurzzeitig): echo "anfang" > temp cat datei >> temp Ich habe das Orakel bereits befragt, leider offenbar mit den falschen Suchbegriffen ... Hat jemand eine Idee? Grüße Dominik
Dominik Klein schrieb:
Hallo Liste,
ich habe hier ein 6GB Textfile. An den Anfang der Datei muss etwas eingefügt werden.
Normalerweise ein Job für einen Editor. Eine 6GB Datei zu laden dauert aber "etwas" ... und ist nicht gerade performant.
Eine Lösung, die ich sonst manchmal verwende, ist hier auch nicht besonders geeignet, weil dann schon 12GB benötigt werden (wenigstens kurzzeitig): echo "anfang" > temp cat datei >> temp
Ich habe das Orakel bereits befragt, leider offenbar mit den falschen Suchbegriffen ... Hat jemand eine Idee?
Grüße Dominik
Idee schon... mv resultfile resultfile.old cat newtext resultfile.old > resultfile rm resultfile.old Die 6 GB wirst Du m. E. immer anfassen müssen - nur erspart das mv die zweiten 6 GB ;-) HTH, Werner
mv resultfile resultfile.old cat newtext resultfile.old > resultfile rm resultfile.old
Die 6 GB wirst Du m. E. immer anfassen müssen - nur erspart das mv die zweiten 6 GB ;-)
Tut es nicht. resultfile.old und resultfile haben doch auch in deiner Lösung jeweils die 6 GB.
HTH, Werner
Leider nicht.
Hallo, Am Die, 16 Mai 2006, Dominik Klein schrieb:
ich habe hier ein 6GB Textfile. An den Anfang der Datei muss etwas eingefügt werden.
Normalerweise ein Job für einen Editor. Eine 6GB Datei zu laden dauert aber "etwas" ... und ist nicht gerade performant. [..] Ich habe das Orakel bereits befragt, leider offenbar mit den falschen Suchbegriffen ... Hat jemand eine Idee?
==== Erst selber testen! ==== shellprompt$ echo '0r einzufuegende_Datei w q' | ed grosse_datei ==== Oder ==== shellprompt$ echo '0a Einzugebender Text und noch etwas mehr
Dominik Klein wrote:
[...] Eine Lösung, die ich sonst manchmal verwende, ist hier auch nicht besonders geeignet, weil dann schon 12GB benötigt werden (wenigstens kurzzeitig): echo "anfang" > temp cat datei >> temp
Fuer das Problem, temporaer mehr Platz zu benoetigen, habe ich jetzt spontan keine Loesung. Ansonsten ist aber beim Umgang mit sehr grossen Textdateien "sed" immer ein guter Kandidat: $> sed '1 { i\
einzufuegender text }' input.ascii > output.ascii
Das fuegt (i\) vor der ersten Zeile (1) der Eingabedatei (input.ascii) den entsprechenden Text (einzufuegender Text) ein und schreibt das Ergebnis in die Ausgabedatei (output.ascii). Nach dem i\ einfach die Return-Taste druecken, ebenfalls nach dem einzufuegenden Text, dann das Kommando zu Ende fuehren. Cheers, Th.
participants (4)
-
David Haller
-
Dominik Klein
-
Thomas Hertweck
-
Werner Flamme