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
sagengrep --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.