it-swarm.com.de

Was ist das Gegenteil von Kopf? Ich möchte alle bis auf die ersten N Zeilen einer Datei

Wie kann ich bei einer Textdatei unbekannter Länge zum Beispiel alle aber ersten 2 Zeilen der Datei lesen? Ich weiß, dass tail mir die letzten N Zeilen gibt, aber ich weiß nicht, was N vor der Zeit ist.

Also für eine Datei

AAAA
BBBB
CCCC
DDDD
EEEE

Ich möchte

CCCC
DDDD
EEEE

Und für eine Akte

AAAA
BBBB
CCCC

Ich würde einfach bekommen

CCCC
125

tail --help Gibt Folgendes an:

  -n, --lines=K            output the last K lines, instead of the last 10;
                           or use -n +K to output lines starting with the Kth

Um also die ersten 2 - Zeilen herauszufiltern, sollte -n +3 Die Ausgabe liefern, nach der Sie suchen (beginnen Sie am 3.).

184
Joe Enos

Vorausgesetzt, Ihre Version von tail unterstützt dies, können Sie angeben, dass der Tail nach X-Linien beginnen soll. In Ihrem Fall würden Sie 2 + 1 tun.

tail -n +3

[[email protected] ~]$ tail -n +3 stack_overflow.txt
CCCC
DDDD
EEEE
18
Mike DeMaria

Eine einfache Lösung mit awk:

awk 'NR > 2 { print }' file.name
12
janm

Versuchen sed 1,2d. Ersetzen Sie 2 nach Bedarf.

7
lhf

tail -n +linecount filename startet die Ausgabe in der Zeile linecount von filename, also tail -n +3 filename sollte machen was du willst.

5
Jim Lewis

Verwenden Sie dies, vorausgesetzt, das erste Sample heißt sample1.dat, dann tail --lines=3 sample1.dat, wodurch alle Zeilen von der 3. bis zur letzten Zeile gedruckt werden.

Nehmen wir für das zweite Beispiel wieder an, es heißt sample2.dat, es wäre tail --lines=-1 sample2.dat was die letzte Zeile ausgeben würde ...

0
t0mm13b

Ich weiß wirklich nicht, wie ich es nur mit Schwanz oder Kopf machen soll, aber mit Hilfe von wc -l (Zeilenanzahl) und Bash-Ausdruck kann man das erreichen.

tail -$(( $( wc -l $FILE | grep -Eo '[0-9]+' ) - 2 )) $FILE

Hoffe das hilft.

0
NawaMan