Ich habe eine riesige Textdatei, die viel zu groß ist, als dass das Ganze in den Speicher übertragen werden könnte. Alles, was ich mit dieser Textdatei tun muss, ist die erste Zeile zu bearbeiten (es ist eine CSV-Datei und ich muss die Titel ändern).
Gibt es eine einfache Möglichkeit, dies in Bash zu tun?
edlin
für ms-dos odered
für Unix schienen dieses Problem nicht zu haben, sondern nur Zeileneditoren ... RAM an Diese Zeiten waren selten und kostbar und eine Dateigröße in Gigabyte war etwas Unvorstellbares! ;)ed
!!! aber es wäre eine gute passform in diesem fall (nicht sicher, ob es eine datei dieser größe handhaben könnte ...)Antworten:
Mit können Sie
less
sehen, was Sie bearbeiten möchten, undsed
die Änderungen vornehmen. Auf diese Weise bearbeiten Sie, ohne die gesamte Datei zu laden.Eine andere Möglichkeit besteht darin, die Datei zu teilen, zu bearbeiten und erneut zu verbinden:
quelle
Wenn Ihre Änderung die Länge der Zeile ändert, muss die gesamte Datei neu geschrieben werden, siehe zum Beispiel diese Diskussion zu SO. Sie sollten wahrscheinlich in Betracht ziehen, die Daten in einer Datenbank zu speichern.
Unter Berücksichtigung dessen können Sie die Datei mit sed streamen und bearbeiten. So ersetzen Sie die erste Zeile (GNU sed):
quelle