Was ist die beste Möglichkeit, eine Datei auszugeben, die in einer bestimmten Zeile beginnt (große Zahl wie 70000)? So etwas wie:
cat --line=70000 <file>
command-line
cat
vonhogen
quelle
quelle
wc -l $1 | awk '{print $1}'
; Leinen =expr $lineno - $2
; Schwanz -n $ Leineno $ 1; }tail -n
Der naheliegendste Weg ist
tail
. Die Syntax kann je nach verwendetem Betriebssystem leicht abweichen:Wenn Sie nicht
tail
zur Arbeit kommen können, können Sie verwendensed
, aber es könnte langsamer enden:quelle
tail
funktionierte einwandfrei in MinGW (auf einer 600 MB-Textdatei). Die Laufzeit betrug nur wenige Sekunden (aber die Eingabedatei könnte sich bereits im Dateicache befunden haben).Wenn Sie anstelle einer Zeilennummer eine Auflistung in der Zeile beginnen müssen, die eine bestimmte enthält
$phrase
, versuchen Sie Folgendes.Der -1000 listet fortlaufend Text für bis zu 1000 Zeilen auf. Sie können dies nach Bedarf ändern. Der
sed
Befehl schneidet die ersten 4 Zeilen der Ausgabe ab, die automatisch eingefügt wurdenmore
, indem eine leere Zeile, die Meldung "... übersprungen" und die beiden Zeilen vor der beabsichtigten Startzeile eingefügt wurden . Ich denke, dies kann je nach Ihrem System variieren.quelle
Sie können den Parameter NR mit dem Befehl awk verwenden :
quelle
cat messages | awk '{if (NR>=7000 && NR <7003) print}'
Zeigt nur die Zeilen 7000, 7001 und 7002.Schwanz +250
mehr zum unix cat befehl
quelle
tail
Vorschlag entspricht den akzeptierten und anderen Antworten von vor Wochen. Warum sich die Mühe machen, etwas zu posten?...can't find the server at www.scripterworld.com.