Wie finde ich die n-te Zeile in einer Datei in der Linux-Befehlszeile? Wie zeige ich Zeilennummer x bis Zeilennummer y an?
Unter Linux gibt es mehrere Möglichkeiten, dasselbe Ergebnis zu erzielen. Das Drucken bestimmter Zeilen aus einer Datei ist keine Ausnahme.
Um die 13. Zeile anzuzeigen, können Sie eine Kombination aus Head und Tail verwenden:
head -13 file_name | tail +13
Oder Sie können den sed-Befehl verwenden:
sed -n '13p' file.txt
Um Zeilennummern von 20 bis 25 anzuzeigen, können Sie Head- und Tail-Befehle wie folgt kombinieren:
head -25 file_name | tail +20
Oder Sie können den sed-Befehl wie folgt verwenden:
sed -n '20,25p' lines.txt
Eine detaillierte Erklärung jedes Befehls folgt als nächstes. Ich werde auch die Verwendung des awk-Befehls für diesen Zweck zeigen.
Zeigen Sie bestimmte Zeilen mit Head- und Tail-Befehlen an
Dies ist meine bevorzugte Art, Linien der Wahl anzuzeigen. Ich finde es einfacher zu merken und zu verwenden.
Eine einzelne spezifische Zeile drucken
Verwenden Sie eine Kombination aus Head- und Tail-Befehl in der folgenden Funktion die Zeilennummer x:
head -x file_name | tail +x
Sie können x durch die Zeilennummer ersetzen, die Sie anzeigen möchten. Angenommen, Sie möchten die 13. Zeile der Datei anzeigen.
example@unixlinux.online:~$ head -13 lines.txt | tail +13
This is line number 13
Erklärung :Sie wissen wahrscheinlich bereits, dass der Head-Befehl die Zeilen einer Datei vom Anfang abruft, während der Tail-Befehl die Zeilen vom Ende abruft.
Der „head -x“-Teil des Befehls ruft die ersten x Zeilen der Dateien ab. Diese Ausgabe wird dann an den tail-Befehl umgeleitet. Der Befehl tail zeigt alle Zeilen beginnend mit Zeilennummer x an.
Ganz offensichtlich, wenn Sie 13 Zeilen von oben nehmen, werden die Zeilen von Nummer 13 bis zum Ende die 13. Zeile sein. Das ist die Logik hinter diesem Befehl.
Spezifischen Zeilenbereich drucken
Nehmen wir nun unsere Kombination aus Head- und Tail-Befehlen, um mehr als eine Zeile anzuzeigen.
Angenommen, Sie möchten alle Zeilen von x bis y anzeigen. Dazu gehören auch die x-ten und y-ten Zeilen:
head -y lines.txt | tail +x
Nehmen wir ein praktisches Beispiel. Angenommen, Sie möchten alle Zeilen von Zeile 20 bis 25 drucken:
example@unixlinux.online:~$ head -25 lines.txt | tail +20
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25
Verwenden Sie SED, um bestimmte Zeilen anzuzeigen
Der leistungsstarke Befehl sed bietet mehrere Möglichkeiten, bestimmte Zeilen zu drucken.
Um beispielsweise die 10. Zeile anzuzeigen, können Sie sed auf folgende Weise verwenden:
sed -n '10p' file.txt
Das -n unterdrückt die Ausgabe, während das p-Kommando bestimmte Zeilen druckt. Lesen Sie diesen ausführlichen SED-Leitfaden, um ihn im Detail kennenzulernen und zu verstehen.
Um alle Zeilen von Zeilennummer x bis Zeilennummer y anzuzeigen, verwenden Sie Folgendes:
example@unixlinux.online:~$ sed -n '3,7p' lines.txt
This is line number 3
This is line number 4
This is line number 5
This is line number 6
This is line number 7
Verwenden Sie AWK, um bestimmte Zeilen aus einer Datei zu drucken
Der awk-Befehl mag kompliziert erscheinen und es gibt sicherlich eine Lernkurve. Aber wie sed ist auch awk ziemlich mächtig, wenn es darum geht, Dateiinhalte zu bearbeiten und zu manipulieren.
example@unixlinux.online:~$ awk 'NR==5' lines.txt
This is line number 5
NR bezeichnet die 'aktuelle Datensatznummer'. Weitere Informationen finden Sie in unserem ausführlichen AWK-Befehlsleitfaden.
Um alle Zeilen von x bis y anzuzeigen, können Sie den awk-Befehl auf folgende Weise verwenden:
example@unixlinux.online:~$ awk 'NR>=20 && NR<=25' lines.txt
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25
Es folgt einer Syntax, die den meisten Programmiersprachen ähnlich ist.
Ich hoffe, dieser kurze Artikel hat Ihnen geholfen, bestimmte Zeilen einer Datei in der Linux-Befehlszeile anzuzeigen. Wenn Sie einen anderen Trick für diesen Zweck kennen, teilen Sie ihn uns im Kommentarbereich mit.