GNU/Linux >> Znalost Linux >  >> Linux

Odstraňte liché nebo sudé řádky z textového souboru

Toto by vám mohlo fungovat (jak GNU, tak sed bez GNU):

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

-n :potlačit tisk

p :tisk aktuálního řádku

n :další řádek


Použití GNU sed:

sed -i '0~2d' filename

pro odstranění sudých řádků ze souboru.

Pro odstranění lichých řádků:

sed -i '1~2d' filename

-i volba by způsobila uložení změn do souboru na místě.

Citace z manuálu:

`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

% je modulový operátor a NR je aktuální číslo řádku, tedy NR%2==0 platí pouze pro sudé řádky a vyvolá pro ně výchozí pravidlo ({ print $0 } ). Tedy uložit pouze sudé řádky , přesměrujte výstup z awk do nového souboru:

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

sed

Totéž můžete provést pomocí sed . devnulls odpověď ukazuje, jak to udělat s GNU sed .Níže jsou alternativy pro verze sed které nemají ~ operátor:

nechat liché řádky

sed 'n; d' infile > outfile

zachovat sudé řádky

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

Linux
  1. Jak odstranit prázdné řádky ze souboru (včetně tabulátoru a mezer)?

  2. Jak odstranit „binární data“ z textového souboru (např. Bash_history)?

  3. Odstranění konkrétních řádků ze souboru v příkazovém řádku Linuxu

  1. Odstraňte prázdné řádky v textovém souboru pomocí grep

  2. Jak odstraním nové řádky z textového souboru?

  3. Efektivně odstraňte poslední dva řádky extrémně velkého textového souboru

  1. Jak odstranit duplicitní řádky uvnitř textového souboru?

  2. Efektivně odstranit prvních pár řádků z textového souboru?

  3. Jak zobrazit určité řádky z textového souboru v Linuxu?