GNU/Linux >> Linux Esercitazione >  >> Linux

Elimina le righe vuote usando sed

Potresti avere spazi o tabulazioni nella riga "vuota". Usa le classi POSIX con sed per rimuovere tutte le righe contenenti solo spazi bianchi:

sed '/^[[:space:]]*$/d'

Una versione più breve che utilizza ERE, ad esempio con gnu sed:

sed -r '/^\s*$/d'

(Nota che sed NON supporta PCRE.)


Mi manca il awk soluzione:

awk 'NF' file

Che restituirebbe:

xxxxxx
yyyyyy
zzzzzz

Come funziona? Dal NF sta per "numero di campi", quelle righe che sono vuote hanno 0 campi, quindi awk valuta da 0 a False e non viene stampata alcuna riga; tuttavia, se è presente almeno un campo, la valutazione è True e rende awk esegue la sua azione predefinita:stampa la riga corrente.


sed

  • '/^[[:space:]]*$/d'
  • '/^\s*$/d'
  • '/^$/d'
  • -n '/^\s*$/!p'

grep

  • .
  • -v '^$'
  • -v '^\s*$'
  • -v '^[[:space:]]*$'

awk

  • /./
  • 'NF'
  • 'length'
  • '/^[ \t]*$/ {next;} {print}'
  • '!/^[ \t]*$/'

sed '/^$/d' dovrebbe andare bene, ti aspetti di modificare il file sul posto? Se è così dovresti usare il -i bandiera.

Forse quelle righe non sono vuote, quindi se è così, guarda questa domanda Rimuovi le righe vuote dai file txt, rimuovi gli spazi dall'inizio e dalla fine della riga Credo che sia quello che stai cercando di ottenere.


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

  2. Usare l'a capo automatico con Mc?

  3. sed unisce le linee insieme

  4. Elimina gli spazi bianchi all'inizio di ogni riga del file, usando bash

  5. Come usare sed per rimuovere solo le doppie righe vuote?

Come eliminare le righe in Vim / Vi

Come rimuovere le righe da un file usando il comando Sed

Come eliminare le righe vuote nei file utilizzando Grep, Sed e Awk

Esercitazione Unix Sed:Elimina le righe di file utilizzando l'indirizzo e i modelli

Rimuovi un carattere specifico usando awk o sed

Usando grep vs awk