Druckdatei nach dem Überspringen der ersten X-Zeilen in Bash
-
Zeilen überspringen mit den Befehlen
head
undtail
-
Verwenden Sie
vim
, um die erstenn
Zeilen zu überspringen -
Verwenden Sie
sed
, um die erstenn
Zeilen zu überspringen
Angenommen, Sie haben eine Datei, eine sehr große, und Sie möchten ihren Inhalt anzeigen. Wie würden Sie vorgehen?
Natürlich möchten Sie nicht den gesamten Inhalt der Datei ausdrucken, da dies nicht sehr praktisch wäre. Sie möchten einige selektive Zeilen drucken; Vielleicht würden Sie reguläre Ausdrücke verwenden, um die Datei zu analysieren und nur die Übereinstimmungen zu drucken.
In diesem Artikel werden verschiedene Methoden dazu erläutert.
Zeilen überspringen mit den Befehlen head
und tail
Das folgende Beispiel verwendet dazu die fünf am häufigsten verwendeten Bash-Befehle:
tail fileName.txt
head fileName.txt
tail -n fileName.txt # here n is an integer
head -n fileName.txt # here n is an integer
tail +n fileName.txt # prints all lines starting from
# the nth file
Der Befehl tail
druckt die letzten zehn Zeilen einer Datei, während der Befehl head
die ersten zehn Zeilen einer Datei druckt.
Wenn Sie den Befehl tail
mit der Option –n
verwenden, werden die letzten n
Zeilen ausgegeben. Wenn Sie dagegen den Befehl head
mit der Option –n
verwenden, werden die ersten n
Zeilen gedruckt.
Es ist wichtig zu beachten, dass hier n
eine ganze Zahl ist. Wenn Sie also die Befehle ausführen, müssen Sie n
durch eine ganze Zahl ersetzen.
Die fünfte Methode ist etwas knifflig. Es ignoriert die ersten (n – 1)
Zeilen und druckt alle Zeilen danach.
Verwenden Sie vim
, um die ersten n
Zeilen zu überspringen
Sie können auch den Vim-Editor verwenden, um die ersten n
Zeilen zu überspringen. Vim ist ein konsolenbasierter Texteditor, mit dem Sie jedes Textdokument höchst effizient erstellen und ändern können.
Um Vim zum ersten Mal zu verwenden, müssen Sie es installieren. Verwenden Sie dazu den folgenden Befehl:
sudo apt install vim
Nachdem Vim nun installiert ist, kommen wir zum geschäftlichen Teil unseres Zwecks, der darin besteht, Vim zu verwenden, um die ersten n
Zeilen zu überspringen.
Wir werden dies tun, indem wir eine Zwischendatei verwenden. Wir werden zuerst den Inhalt unserer alten Datei in eine neue kopieren; dann löschen wir die ersten n
Zeilen der neuen Datei.
Wir werden die Eingabe- und Ausgabeumleitung verwenden, um den Inhalt einer Datei in eine andere zu kopieren. Wenn Sie den Betriebssystemkurs studiert haben, haben Sie sicher schon von der ppfdt
-Tabelle (Process File Descriptor Table) gehört.
Standardmäßig zeigt der erste Deskriptor auf stdin
(oder keyboard), der zweite Deskriptor auf stdout
(oder monitor) und der dritte Deskriptor auf stderror
.
Betrachten Sie das folgende Skript zum weiteren Verständnis.
cat 0<old_file.txt 1>new_file.txt # copies old file’s contents to new file
Der obige Befehl liest den Inhalt der alten Datei und kopiert ihn in die neue Datei. Beachten Sie, wie wir den Deskriptor 0
zum Lesen und den Deskriptor 1
zum Schreiben verwenden.
Wenn Sie diesen Deskriptor verwirrend finden, haben wir etwas anderes für Sie. Die folgenden Befehle funktionieren auch:
cat <old_file.txt >new_file.txt # copies old file’s contents to new file
cp <old_file.txt >new_file.txt # copies old file’s contents to new file
Bitte beachten Sie, dass wir bei der zweiten Methode oben den Kopierbefehl (d. h. cp
) verwendet haben. Es benötigt zwei Argumente: den Pfad zur Quelldatei und den Pfad zur Zieldatei.
Jetzt, da wir mit dem Kopieren der Datei fertig sind. Öffnen Sie die neue Datei in Vim und verwenden Sie den folgenden Befehl:
vim new_file.txt
Verwenden Sie nun Shift+Esc und geben Sie den folgenden Befehl in Vim ein:
:1,nd # here n is an integer number e.g., 2
Der obige Befehl löscht die ersten n
Zeilen in der new_file.txt
. Dabei steht d
für löschen.
Verwenden Sie sed
, um die ersten n
Zeilen zu überspringen
Das Erstellen einer neuen Datei und das anschließende Löschen ihres Inhalts kann mühsam sein. Darüber hinaus verbraucht es auch viel zusätzlichen Speicher, wenn die alte Datei riesig ist.
Sehen wir uns also eine einfachere Methode an, um dasselbe zu erreichen:
sed 1,nd old_file.txt # here n is an integer
Es ist wichtig zu beachten, dass der Befehl sed
die alte Datei nicht verändert. Stattdessen wird einfach der Inhalt der alten Datei angezeigt, nachdem die ersten n
Zeilen entfernt wurden.