Ich muss die ersten 42 Zeilen eines 2-GB-SQL-Dumps entfernen.
Ich weiß, dass ich die ersten Zeilen anzeigen kann mit:
head -n 44 dump.sql
Aber gibt es trotzdem die Möglichkeit, sie zu bearbeiten oder zu entfernen?
Ich muss die ersten 42 Zeilen eines 2-GB-SQL-Dumps entfernen.
Ich weiß, dass ich die ersten Zeilen anzeigen kann mit:
head -n 44 dump.sql
Aber gibt es trotzdem die Möglichkeit, sie zu bearbeiten oder zu entfernen?
Antworten:
Wenn Sie nur die Zeilen ab dem 43. anzeigen möchten, können Sie verwenden
tail -n +43 dump.sql
Das +Zeichen ist wichtig - ohne es tailwerden stattdessen die letzten 43 Zeilen gedruckt . Alternativ mit 'sed'
sed 1,42d dump.sql
Wenn Sie die ersten 42 Zeilen der Originaldatei wirklich löschen möchten, können Sie die Änderung mit der -iOption vornehmen
sed -i 1,42d dump.sql
sed -i 1,50000000d 17GigFileErstellt eine temporäre Datei sedXYZ, die viel mehr Gigabyte verbraucht. Gibt es einen Ansatz ohne temporäre Dateien?
tail -n +43und head -n 44wie in der Frage erwähnt?
Dies scheint am einfachsten zu sein:
sed '1,42d' test.sql > test2.sql
Entfernen Sie die Zeilen 1-42 aus test.sql und speichern Sie sie als test2.sql
Sie können Vim im Ex-Modus verwenden:
ex -s -c '1d42|x' dump.sql
1 in die erste Zeile gehen
42 Wähle 42 Zeilen aus
d löschen
x speichern und schließen
Entschuldigung, ich kann Ihnen momentan keinen aktuellen Code geben. Versuchen Sie jedoch, etwas in der Richtung von zu betrachten
tail -n arcv(`wc -l`) -44
Was dies tun sollte (einmal richtig formatiert), ist die Anzahl der Zeilen in der Datei zu zählen (wc -l), 44 davon zu subtrahieren (-44) und dann alles beginnend mit der 45. Zeile in der Datei auszudrucken.
Hoffe das hilft und viel Glück.
wc -lauf der Datei, können Sie sie zweimal verarbeiten, während sedoder tailerst einmal verarbeiten.
Aufgrund von sedUnstimmigkeiten zwischen Linux und Mac habe ich beschlossen, das tail -n +43 dump.sql > dump.sqlFormat zu verwenden .
tail. Ich habe viele Male etwas Neues gefunden, um aus Ihren Antworten zu lernen. Vielen Dank.