GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie zeigt man bestimmte Zeilen aus einer Textdatei in Linux an?

Lösung 1:

sed -n '10000000,10000020p' filename

Sie können das vielleicht so etwas beschleunigen:

sed -n '10000000,10000020p; 10000021q' filename

In diesen Befehlen ist die Option -n verursacht sed um "automatisches Drucken des Musterraums zu unterdrücken". Die p Befehl "print[s] the current pattern space" und q Befehl "Sed-Skript sofort beenden, ohne weitere Eingaben zu verarbeiten ..." Die Anführungszeichen stammen aus sed man Seite.

Übrigens, Ihr Befehl

tail -n 10000000 filename | head 10

beginnt bei der zehnmillionsten Zeile vom Ende der Datei, während Ihr "mittlerer" Befehl am zehnmillionsten vom Anfang zu beginnen scheint was äquivalent wäre zu:

head -n 10000010 filename | tail 10

Das Problem ist, dass bei unsortierten Dateien mit Zeilen variabler Länge jeder Prozess die Datei durchlaufen muss, um Zeilenumbrüche zu zählen. Es gibt keine Möglichkeit, das abzukürzen.

Wenn die Datei jedoch sortiert ist (z. B. eine Protokolldatei mit Zeitstempeln) oder Zeilen mit fester Länge hat, können Sie die Datei anhand einer Byte-Position durchsuchen. Im Beispiel der Protokolldatei könnten Sie eine binäre Suche für eine Reihe von Zeiten durchführen, wie es mein Python-Skript hier * tut. Im Fall der Datei mit fester Datensatzlänge ist es wirklich einfach. Sie suchen einfach nach linelength * linecount Zeichen in die Datei.

Lösung 2:

Ich habe die folgende Verwendung von sed herausgefunden

sed -n '10000000,+20p'  filename

Hoffe, es ist für jemanden nützlich!

Lösung 3:

Dies ist das erste Mal, dass ich hier poste! Wie auch immer, dieser ist einfach. Angenommen, Sie möchten Zeile 8872 aus Ihrer Datei namens file.txt ziehen. So geht's:

cat -n Datei.txt | grep '^ *8872'

Jetzt geht es darum, 20 Zeilen danach zu finden. Um dies zu erreichen, tun Sie

cat -n Datei.txt | grep -A 20 '^ *8872'

Für Zeilen davor oder davor siehe die Flags -B und -C im grep-Handbuch.


Linux
  1. So fügen Sie unter Linux Text an das Dateiende an

  2. So fügen Sie unter Linux einfach Text an das Dateiende an

  3. Wie lösche ich mehrere zufällige Zeilen aus einer Textdatei mit Sed?

  4. So zeigen Sie bestimmte Zeilen einer Datei in der Linux-Befehlszeile an

  5. Wie man Zeilen in einer Datei in UNIX/Linux zählt

So mischen Sie Zeilen in einer Datei unter Linux

So extrahieren Sie E-Mail-Adressen aus einer Textdatei unter Linux

So fügen Sie Text am Anfang einer Datei in Linux hinzu

So kehren Sie Zeilen in einer Datei zeichenweise in Linux um

So entfernen Sie (^M) Zeichen aus einer Datei in Linux

So finden Sie die längste(n) Zeile(n) in einer Datei in Linux