GNU/Linux >> Linux Esercitazione >  >> Linux

Eliminazione di righe specifiche da un file nella riga di comando di Linux

Il compito è semplice. Devi eliminare righe specifiche da un file di testo nel terminale Linux.

Puoi usare un editor di testo come Vim o Nano, inserire il file ed eliminare le righe desiderate. Tuttavia, questo approccio non è adatto per l'automazione mediante script bash.

Invece, puoi usare il potente editor della riga di comando sed ed eliminare le righe che corrispondono a criteri specifici. E, naturalmente, puoi usare sed negli script della tua shell.

Lascia che ti mostri alcuni casi d'uso.

⚠️Gli esempi mostrati qui modificheranno il file originale all'istante. Sarebbe una buona idea fare un backup di quel file prima di iniziare a sperimentarlo.

Rimuovi l'ennesima riga dal file

Immagina di dover eliminare il numero di riga 7 in un file. Puoi usare il comando sed in questo modo:

sed -i '7d' filename

Lascia che ti spieghi come funziona:

  • -i :Questa opzione abilita la modifica sul posto. Per impostazione predefinita, sed visualizzerà solo l'output. Con questo -i opzione, modifica il file attuale senza mostrarlo sul display.
  • 7d :Qui 7 è il numero di riga e d indica la cancellazione della riga.
  • filename :Questo è il file che vuoi modificare. Puoi anche fornire un percorso assoluto o relativo se il file si trova in un'altra directory.

Lascia che ti mostri con un esempio reale. Ecco un file di testo di esempio chiamato agatha.txt:

The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies

Per rimuovere la quarta riga da questo file, utilizzo:

sed '4d' agatha.txt

Ciò comporterà la seguente visualizzazione con la riga "Pane del gigante" rimossa :

The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies

Ora, supponiamo che tu voglia rimuovere la prima riga del file nella riga di comando di Linux. Usa sed in questo modo:

sed -i '1d' filename
💡Se vuoi vedere il risultato della manipolazione senza modificare il file stesso, non usare il -i opzione del comando sed.

Rimuovi l'ultima riga usando sed

Hai imparato a eliminare una riga particolare, ma cosa succede se devi rimuovere l'ultima riga?

Puoi sempre ottenere il numero totale di righe in un file usando il comando wc e usare questo numero con sed. Tuttavia, sed ha un modo dedicato per eliminare l'ultima riga di un file. Non devi più preoccuparti del numero di file ora.

sed -i '$d' filename.txt

Elimina un intervallo di righe

Simile a quanto visto in precedenza, puoi anche eliminare un intervallo di righe dal file.

Supponiamo di dover eliminare le righe da 11 a 15, puoi fornire l'intervallo in questo modo:

sed -i '11,15d' filename

Nota che rimuoverà anche le linee 11 e 15, non solo le linee che cadono tra di loro.

Rimuovi le righe contenenti una stringa

Puoi anche usare sed per eliminare tutte le righe che contengono una determinata stringa o corrispondono a uno schema specifico.

Il comando seguente cancellerà tutte le righe che contengono la parola 'string':

sed -i '/string/d' filename

Tieni presente che questa è una ricerca con distinzione tra maiuscole e minuscole. Puoi anche usare un modello regex invece di una stringa normale.

Rimuovi le righe che iniziano con una parola

Se vuoi rimuovere tutte le righe che iniziano con una parola o una lettera particolare, devi solo fornire il modello regex in questo modo:

sed -i '/^word/d' filename

Suggerimento bonus:rimuovi tutte le righe vuote

Prima di concludere questo articolo, consentitemi di condividere rapidamente come rimuovere tutte le righe vuote usando sed:

sed -i '/^$/d' filename

Spero che questo suggerimento rapido ti sia utile per rimuovere le righe dal file di testo nella riga di comando di Linux.

Se sei interessato, scopri di più sull'editor della riga di comando di sed:


Linux
  1. Come eliminare file e directory in Linux dalla riga di comando

  2. Come visualizzare righe specifiche di un file nella riga di comando di Linux

  3. Comando wc Linux

  4. Come contare il numero di righe in un file in Linux (esempi di comandi wc e nl)

  5. 7 Esempi di comandi Linux Uniq per rimuovere le righe duplicate dal file

Come estrarre o decomprimere i file tar.gz dalla riga di comando di Linux

Incolla comando in Linux (Unisci righe)

Comando Diff in Linux con esempi

Copia un file in più directory dalla riga di comando su Linux

Come mescolare le linee in un file in Linux

Come rimuovere le righe da un file usando il comando Sed