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 ed
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: