GNU/Linux >> Linux Esercitazione >  >> Linux

Rimuovi le righe pari o dispari da un file di testo

Questo potrebbe funzionare per te (sia GNU che non GNU sed):

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

-n :elimina la stampa

p :stampa la riga corrente

n :riga successiva


Utilizzo di GNU sed:

sed -i '0~2d' filename

per rimuovere le righe pari dal file.

Per rimuovere le righe dispari:

sed -i '1~2d' filename

Il -i l'opzione farebbe sì che le modifiche vengano salvate sul posto nel file.

Citando dal manuale:

`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

Il % è un operatore modulo e NR è il numero di riga corrente, quindi NR%2==0 è vero solo per le righe pari e invocherà la regola predefinita per esse ({ print $0 } ). Quindi per salvare solo le linee pari , reindirizza l'output da awk in un nuovo file:

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

sed

Puoi ottenere la stessa cosa con sed . devnulls answer mostra come farlo con GNU sed .Di seguito sono riportate le alternative per le versioni di sed che non hanno il ~ operatore:

mantieni linee dispari

sed 'n; d' infile > outfile

mantieni linee pari

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

Linux
  1. Come rimuovere le righe duplicate all'interno di un file di testo?

  2. Come rimuovere le righe vuote da un file (inclusi tabulazione e spazi)?

  3. Come rimuovere i "dati binari" da un file di testo (ad es. Bash_history)?

  4. Come eliminare più righe casuali da un file di testo utilizzando Sed?

  5. Come rimuovere le linee che appaiono sul file B da un altro file A?

Come rimuovere le righe da un file usando il comando Sed

Come rimuovere tutti i caratteri di spazio bianco da un file di testo

Rimuovi le righe vuote in un file di testo tramite grep

Come rimuovo le nuove righe da un file di testo?

Come usare sed per rimuovere le ultime n righe di un file

Trova e sostituisci il testo in un file tra un intervallo di righe usando sed