Unix-Katze ab Zeile

40

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>
vonhogen
quelle

Antworten:

60

Schauen Sie sich den Schwanz genauer an: --lines = + N switch:

tail --lines=+100 <file>
Svend
quelle
Wow. Ich wusste es nicht einmal, nachdem ich es 8 Jahre lang unter Linux verwendet hatte! Ich habe immer eine Bash Fn benutzt! Vielen Dank ! getFromLine () {lineno = wc -l $1 | awk '{print $1}'; Leinen = expr $lineno - $2; Schwanz -n $ Leineno $ 1; }
SecureBadshah
2
Hinweis: Dies funktioniert nicht mit Mountain Lion (Darwin Kernel Version 13.1.0). Die Variante für Berglöwen isttail -n
Kaushik Ghose
22

Der naheliegendste Weg ist tail. Die Syntax kann je nach verwendetem Betriebssystem leicht abweichen:

tail -n +70000

Wenn Sie nicht tailzur Arbeit kommen können, können Sie verwenden sed, aber es könnte langsamer enden:

sed -pe '1,69999d'
Chris Johnsen
quelle
tailfunktionierte 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).
Peter Mortensen
2

Wenn Sie anstelle einer Zeilennummer eine Auflistung in der Zeile beginnen müssen, die eine bestimmte enthält $phrase, versuchen Sie Folgendes.

more -1000 +/"$phrase" yourfilename | sed '1,4d'

Der -1000 listet fortlaufend Text für bis zu 1000 Zeilen auf. Sie können dies nach Bedarf ändern. Der sedBefehl schneidet die ersten 4 Zeilen der Ausgabe ab, die automatisch eingefügt wurden more, 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.

AlohaUnixFan
quelle
2

Sie können den Parameter NR mit dem Befehl awk verwenden :

cat <file> | awk '{if (NR>=7000) print}'
Gefolge
quelle
2
Sie können diesen Befehl mit anderen Grenzwerten verwenden. Beispiel: cat messages | awk '{if (NR>=7000 && NR <7003) print}'Zeigt nur die Zeilen 7000, 7001 und 7002.
Gefolge
-1

Schwanz +250

mehr zum unix cat befehl


quelle
2
faszinierender Link, aber es gibt keine Informationen, die auf diese Frage zutreffen, und Ihr tailVorschlag entspricht den akzeptierten und anderen Antworten von vor Wochen. Warum sich die Mühe machen, etwas zu posten?
Quack Quijote
Die Verbindung ist unterbrochen -...can't find the server at www.scripterworld.com.
Peter Mortensen