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

Entfernen Sie ungerade oder gerade Zeilen aus einer Textdatei

Dies könnte für Sie funktionieren (sowohl GNU- als auch Nicht-GNU-Sed):

 sed -n 'p;n' file # keep odd
 sed -n 'n;p' file # keep even

-n :Drucken unterdrücken

p :aktuelle Zeile drucken

n :nächste Zeile


Mit GNU sed:

sed -i '0~2d' filename

um die geradzahligen Zeilen aus der Datei zu entfernen.

Zum Entfernen ungeradzahliger Zeilen:

sed -i '1~2d' filename

Die -i würde bewirken, dass die Änderungen direkt in der Datei gespeichert werden.

Zitat aus dem Handbuch:

`FIRST~STEP'
     This GNU extension matches every STEPth line starting with line
     FIRST.  In particular, lines will be selected when there exists a
     non-negative N such that the current line-number equals FIRST + (N
     * STEP).  Thus, to select the odd-numbered lines, one would use
     `1~2'; to pick every third line starting with the second, `2~3'
     would be used; to pick every fifth line starting with the tenth,
     use `10~5'; and `50~0' is just an obscure way of saying `50'.

awk

Die % ist ein Modulo-Operator und NR ist die aktuelle Zeilennummer, also NR%2==0 ist nur für gerade Zeilen wahr und ruft die Standardregel für sie auf ({ print $0 } ). Also um nur die geraden Zeilen zu speichern , leiten Sie die Ausgabe von awk um in eine neue Datei:

awk 'NR%2==0' infile > outfile

gesendet

Das Gleiche können Sie mit sed erreichen . devnulls Antwort zeigt, wie man es mit GNU sed macht .Unten sind Alternativen für Versionen von sed die nicht den ~ haben Betreiber:

ungerade Zeilen beibehalten

sed 'n; d' infile > outfile

Gleiche Linien beibehalten

sed '1d; n; d' infile > outfile

Linux
  1. Wie entferne ich Leerzeilen aus einer Datei (einschließlich Tabulatoren und Leerzeichen)?

  2. Effizient die ersten paar Zeilen aus einer Textdatei entfernen?

  3. Löschen bestimmter Zeilen aus einer Datei in der Linux-Befehlszeile

  4. Entfernt Vorkommen von Zeichenketten in Textdatei

  5. So verwenden Sie sed, um die letzten n Zeilen einer Datei zu entfernen

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

So entfernen Sie alle Leerzeichen aus einer Textdatei

Entfernen Sie leere Zeilen in einer Textdatei mit grep

Wie entferne ich Zeilenumbrüche aus einer Textdatei?

Wie entferne ich die Zeilen, die in Datei B erscheinen, aus einer anderen Datei A?

Entfernen Sie effizient die letzten beiden Zeilen einer extrem großen Textdatei