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>

Antworten:


60

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

tail --lines=+100 <file>

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'

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.


2

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

cat <file> | awk '{if (NR>=7000) print}'

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.