28Jun

So entfernen Sie Zeilen aus der Mitte einer Datei mit dem Linux-Terminal

Wenn Sie Ihre eigenen Server verwalten, ist eines der Dinge, die Sie regelmäßig erledigen müssen, das Extrahieren von Dateien aus der Mitte einer Datei. Vielleicht ist es eine Log-Datei, oder Sie müssen eine einzelne Tabelle aus der Mitte Ihrer MySQL-Backup-Datei hinzufügen, wie ich es getan habe.

Um die Zeilennummern herauszufinden, hat ein einfacher Befehl grep -n den Job erledigt( das Argument -n gibt die Zeilennummern aus).Dies machte es leicht herauszufinden, was ich extrahieren musste.

grep -n wp_posts howtogeekdb010114.bak |mehr

Ergebnisse in etwa so, die die Zeilennummern auf der linken Seite der Ausgabe zeigen. Wenn Sie alles in "mehr" stecken, stellen Sie sicher, dass Sie die erste Zeile sehen können, ohne dass sie durchläuft. Jetzt hast du die Zeilennummer, mit der du anfangen solltest, und wahrscheinlich die, mit der du enden willst.

4160: - Tabellenstruktur für die Tabelle `wp_posts` 4163: DROP TABLE IF EXISTS` wp_posts`;4166: CREATE TABLE `wp_posts`( 4203: - Dump-Daten für die Tabelle` wp_posts` 4206: LOCK TABLES `wp_posts` WRITE; 4207: / *! 40000 ALTER TABLE` wp_posts` DISABLE KEYS * /; 4208: INSERT INTO `wp_posts`VALUES( 1,2, '2006-09-11 05:07:23', '2006-09-11

Sie könnten natürlich die Ausgabe von grep in eine andere Datei pipen, so:

grep Schlüsselwort Dateiname.txt & gt; Ausgabedatei

In meinem Fall wollte das nicht funktionieren, weil ich die resultierende Sicherung aus irgendeinem Grund nicht importieren konnte. So fand ich eine andere Möglichkeit, die Zeilen mit sed zu extrahieren, und diese Methode hat funktioniert

sed -n '4160,4209p' howtogeekdb0101140201.bak & gt; Ausgabedatei

Im Prinzip ist die Syntax wie folgt: Stellen Sie sicher, dass das Argument -n verwendet wird und das "p" nach der zweiten Zeilennummer eingefügt wird.

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp 'Dateiname & gt; Ausgabedateiname

Sie können auch andere Zeilen in der Mitte einer Datei herausziehen"Befehl mit dem Argument + number, um nur die ersten x Zeilen einer Datei zu lesen und dann mit dem Tail diese Zeilen zu extrahieren. Nicht die beste Option, viel Overhead. Einfachere Option? Sie können den Befehl split verwenden, um die Datei direkt an der gewünschten Zeilennummer in mehrere Dateien umzuwandeln, und dann die Zeilen mit head oder tail extrahieren.

Oder Sie können einfach sed verwenden.