Unix-Katze ab der Linie

49519
vonhogen

Was ist der beste Weg, um aus einer Datei ausgehend von einer bestimmten Zeile (große Zahl wie 70000) auszugeben. So etwas wie:

cat --line=70000 <file> 
34

5 Antworten auf die Frage

54
Svend

Schauen Sie sich Schwanz genauer an, es ist --lines = + N Schalter:

tail --lines=+100 <file> 
Beeindruckend. Ich wusste das nicht, auch nachdem ich es 8 Jahre unter Linux verwendet hatte! Ich habe immer eine bash fn benutzt! Vielen Dank ! getFromLine () ' `; Leineno = `expr $ Leineno - $ 2`; Schwanz -n $ Leinen $ 1; } secureBadshah vor 14 Jahren 0
Hinweis: Dies funktioniert nicht bei Mountain Lion (Darwin Kernel Version 13.1.0). Die Variante für Berglöwen ist "tail -n" Kaushik Ghose vor 10 Jahren 2
19
Chris Johnsen

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

tail -n +70000 

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

sed -pe '1,69999d' 
`tail` hat in [MinGW] (http://en.wikipedia.org/wiki/MinGW) (auf einer 600 MB-Textdatei) einwandfrei funktioniert. Die Laufzeit betrug nur wenige Sekunden (die Eingabedatei konnte sich jedoch bereits im Dateicache befinden). Peter Mortensen vor 7 Jahren 0
2
AlohaUnixFan

Wenn Sie anstelle einer Zeilennummer mit der Auflistung in der Zeile beginnen müssen, die eine gegebene 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 bei Bedarf ändern. Der sedBefehl schneidet die ersten 4 Zeilen der Ausgabe ab, die automatisch eingefügt wurden more, wobei eine leere Zeile, die Meldung "... überspringen" und die zwei Zeilen vor Ihrer beabsichtigten Startzeile eingefügt wurden . Ich denke, das hängt von Ihrem System ab.

2
Gefolge

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

cat <file> | awk '' 
Sie können diesen Befehl mit anderen Grenzwerten verwenden. Als Beispiel: `cat messages | awk '' 'zeigt nur die Zeilen 7000, 7001 und 7002 an. Gefolge vor 6 Jahren 2
-1
ein faszinierender Link, aber es gibt nicht wirklich Informationen, die auf diese Frage zutreffen, und Ihr "Schwanz" -Vorschlag stimmt mit den akzeptierten und anderen Antworten von vor einigen Wochen überein. warum die Mühe machen zu posten? quack quixote vor 14 Jahren 2
Der Link ist defekt - `... kann den Server unter www.scripterworld.com.` nicht finden Peter Mortensen vor 7 Jahren 0