GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Schneller Unix-Befehl zum Anzeigen bestimmter Zeilen in der Mitte einer Datei?

Nein, gibt es nicht, Dateien sind nicht zeilenadressierbar.

Es gibt keine konstante Möglichkeit, den Anfang der Zeile n zu finden in einer Textdatei. Sie müssen die Datei durchströmen und Zeilenumbrüche zählen.

Verwenden Sie das einfachste/schnellste Werkzeug, das Sie haben, um die Arbeit zu erledigen. Für mich mit head macht viel sinnvoller als grep , da letzteres viel komplizierter ist. Ich sage nicht "grep ist langsam", ist es wirklich nicht, aber ich wäre überrascht, wenn es schneller als head wäre für diesen Fall. Das wäre ein Fehler in head , im Grunde.


mit GNU-grep könnten Sie einfach

sagen
grep --context=10 ...

# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3,  efficient on large files 

Methode 3 effizient bei großen Dateien

schnellste Möglichkeit, bestimmte Zeilen anzuzeigen


Ich habe zwei andere Lösungen gefunden, wenn Sie die Zeilennummer kennen, aber sonst nichts (kein grep möglich):

Angenommen, Sie benötigen die Zeilen 20 bis 40,

sed -n '20,40p;41q' file_name

oder

awk 'FNR>=20 && FNR<=40' file_name

Bei Verwendung von sed es ist effizienter, die Verarbeitung nach dem Drucken der letzten Zeile zu beenden, als die Verarbeitung bis zum Ende der Datei fortzusetzen. Dies ist besonders wichtig bei großen Dateien und Druckzeilen am Anfang. Dazu muss der sed Der obige Befehl leitet die Anweisung 41q ein um die Verarbeitung nach Zeile 41 zu stoppen, da uns im Beispiel nur die Zeilen 20-40 interessieren. Sie müssen die 41 in die letzte Zeile ändern, die Sie interessiert, plus eins.


Linux
  1. Bearbeiten von Text auf der Kommandozeile mit sed

  2. Wie fügt man Text vor der ersten Zeile einer Datei ein?

  3. Wie kehrt der Befehl Sed ‘1!g;h;$!d’ den Inhalt einer Datei um?

  4. Löschen bestimmter Zeilen aus einer Datei in der Linux-Befehlszeile

  5. Linux-wc-Befehl

Zeigen Sie den Inhalt einer Datei in der Linux-Befehlszeile an

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

5 Befehle zum Anzeigen des Inhalts einer Datei in der Linux-Befehlszeile

Unix Sed Tutorial:Drucken von Dateizeilen mit Adresse und Mustern

Unix Sed Tutorial:Dateizeilen anhängen, einfügen, ersetzen und zählen

Wie man Zeilen in einer Datei in UNIX/Linux zählt