Il comando sed (Stream Editor) in Linux è un potente strumento utilizzato per l’elaborazione del testo e la modifica dei file. Consente agli utenti di cercare, sostituire, inserire e cancellare testo nei file in modo efficiente, rendendolo un comando fondamentale per l’automazione e lo scripting. In questa guida, esamineremo come utilizzare il comando sed per aggiornare i file in Linux con esempi pratici.
Il comando sed è ampiamente utilizzato per:
Sostituzione del testo – Sostituire facilmente parole, frasi o modelli nei file.
Elaborazione in batch – Modifica di più file contemporaneamente tramite script.
Efficienza: elabora rapidamente file di grandi dimensioni senza aprirli.
Modifica in linea – Modifica i file direttamente dalla riga di comando.
Automazione – Utilizzata negli script per gestire modifiche ripetitive del testo.
La sintassi generale del comando sed è:
sed [OPTIONS] 's/old-text/new-text/g' filename
Dove:
Per sostituire una parola specifica in un file, utilizzare:
sed 's/Linux/Ubuntu/g' file.txt
Questo sostituisce la prima occorrenza di “Linux” con “Ubuntu” in ogni riga di file.txt.
Per sostituire tutte le occorrenze di una parola a livello globale in un file:
sed 's/Linux/Ubuntu/g' file.txt
Il flag g assicura che ogni occorrenza in una riga venga sostituita.
Per apportare modifiche direttamente nel file senza visualizzare l’output:
sed -i 's/Linux/Ubuntu/g' file.txt
L’opzione -i abilita la modifica in-place, cioè il file originale viene modificato senza dover salvare una versione separata.
Per modificare solo righe specifiche di un file, specificare il numero di riga:
sed '3s/Linux/Ubuntu/' file.txt
Questo comando sostituisce “Linux” con “Ubuntu” solo alla riga 3.
Per eliminare tutte le righe contenenti una parola specifica, utilizzate:
sed '/unwanted-text/d' file.txt
Questo rimuove tutte le righe che contengono “testo indesiderato”.
Per rimuovere una riga specifica, utilizzare:
sed '5d' file.txt
In questo modo si elimina la riga 5 di file.txt.
Per aggiungere una riga prima di un numero di riga specifico:
sed '3i\This is a new line' file.txt
In questo modo si inserisce la scritta “Questa è una nuova riga” prima della riga 3.
Per inserire una riga dopo un numero di riga specifico:
sed '3a\This is an appended line' file.txt
In questo modo si aggiunge “Questa è una riga aggiunta” dopo la riga 3.
Per sostituire il testo in più file contemporaneamente:
sed -i 's/Linux/Ubuntu/g' *.txt
Questo comando modifica tutti i file .txt della directory, sostituendo “Linux” con “Ubuntu”.
Per eseguire più modifiche contemporaneamente:
sed -i -e 's/Linux/Ubuntu/g' -e 's/Server/Cloud/g' file.txt
Questo sostituisce “Linux” con “Ubuntu” e “Server” con “Cloud” nel file.txt.
Per sostituire i numeri in un file:
sed 's/[0-9]/#/g' file.txt
Questo sostituisce tutte le cifre con #.
Per estrarre e visualizzare le righe da 5 a 10:
sed -n '5,10p' file.txt
L’opzione -n impedisce di stampare l’intero file, mostrando solo le righe 5-10.
Il comando sed è uno strumento versatile ed efficiente per aggiornare i file in Linux. Sia che si debba sostituire del testo, cancellare delle righe o inserire del contenuto, sed può automatizzare e semplificare queste operazioni. La padronanza di sed consente di migliorare il flusso di lavoro e la produttività nell’amministrazione e nello scripting di Linux.