Effizienter Weg, um fügen Sie zwei Zeilen am Anfang eine sehr große Datei
Habe ich eine Gruppe von sehr groß (ein paar GB pro) text-Dateien. Ich muss hinzufügen von zwei Zeilen am Anfang von jeder dieser Dateien.
Ich habe versucht, mit sed mit dem folgenden Befehl
sed -i '1iFirstLine'
sed -i '2iSecondLine'
Das problem mit der sed ist, dass es eine Schleife durch die gesamte Datei, auch wenn Sie hatte, um nur zwei Zeilen am Anfang und deshalb dauert es viel Zeit.
Gibt es eine andere Möglichkeit dies zu tun, effizienter zu Lesen, ohne die gesamte Datei?
- Haben Sie Lesen die Frage? 🙂
- Es ist eine wunderbare Erklärung hier http://backreference.org/2011/01/29/in-place-editing-of-files/ auch die Beschreibung von möglichen Tücken des PEARL Ansatz.
- Dein sed Befehl würde schneller sein wenn Sie nicht:
sed -i -e '1iFirstLine' -e '2iSecondLine' -e '3q'
. - dies wird nur print 3 Zeilen in der Datei. Die restlichen Zeilen werden nicht ausgedruckt.
- Du hast Recht, mein test war fehlerhaft.
- Aber ohne die Letzte
-e3q
das ist so gut wie die anderen fixes. (Die zweite Zeile sollte auch eingefügt werden, bei Zeile 1, aber.) - unix.stackexchange.com/questions/87772/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie versuchen,
Dieser ist perfekt gearbeitet und extrem schnell zu.
fast
- vielleicht ist es, aber machen Sie den test, um zu sehen, ob das stimmt. Einfaches voranstellen Aufruf mittime
und sehen, wie lange es dauertHinzufügen zu Beginn ist nicht möglich ohne die Datei neu schreiben (im Gegensatz zu Anhängen am Ende). Sie können nicht einfach die "shift" - Datei Inhalt wie kein Dateisystem unterstützt wird. Damit Sie tun sollten:
Hinweis: Sie müssen genügend Speicherplatz, um beide Dateien für eine Weile.