Il comando sed (Stream Editor) in Linux è uno strumento potente per la manipolazione del testo e la modifica dei file. Consente agli utenti di cercare, sostituire, inserire ed eliminare testo nei file, rendendolo essenziale per l’automazione e la creazione di script. In questa guida vedremo come utilizzare il comando sed per aggiornare i file in Linux con esempi pratici.


Perché usare il comando Sed?

Il comando sed è ampiamente utilizzato per:

Sostituzione del testo – Sostituire facilmente parole, frasi o modelli nei file.
Elaborazione batch – Modificare più file contemporaneamente tramite script.
Efficienza – Modificare rapidamente file di grandi dimensioni senza aprirli.
Modifica inline – Aggiornare i file direttamente dalla riga di comando.
Automazione – Utilizzarlo in script per gestire modifiche ripetitive ai file.


Sintassi di base del comando Sed

La sintassi generale del comando sed è:

sed [OPZIONI] 's/testo-vecchio/testo-nuovo/g' nome_file

Dove:

  • s – Indica la sostituzione.
  • testo-vecchio – Il testo da sostituire.
  • testo-nuovo – Il nuovo testo da inserire.
  • g – (Globale) Garantisce la sostituzione di tutte le occorrenze nella riga.
  • nome_file – Il file da modificare.

Come utilizzare il comando Sed per aggiornare i file

1. Sostituire una parola in un file

Per sostituire una parola specifica in un file, usa:

sed 's/Linux/Ubuntu/g' file.txt

Questa operazione sostituisce la prima occorrenza di “Linux” con “Ubuntu” in ogni riga di file.txt.

2. Sostituire tutte le occorrenze in un file

Per sostituire tutte le occorrenze di una parola globalmente in un file:

sed 's/Linux/Ubuntu/g' file.txt

Il flag g assicura che ogni occorrenza nella riga venga sostituita.

3. Modificare un file direttamente (modifica inline)

Per apportare modifiche direttamente al file senza mostrare l’output:

sed -i 's/Linux/Ubuntu/g' file.txt

L’opzione -i abilita la modifica in-place, aggiornando direttamente il file originale.

4. Sostituire il testo solo in righe specifiche

Per modificare solo determinate righe in un file, specifica il numero di riga:

sed '3s/Linux/Ubuntu/' file.txt

Questa operazione sostituisce “Linux” con “Ubuntu” solo nella riga 3.

5. Eliminare una riga contenente un testo specifico

Per eliminare tutte le righe contenenti una parola specifica, usa:

sed '/testo-indesiderato/d' file.txt

Questo comando rimuove tutte le righe che contengono “testo-indesiderato”.

6. Eliminare una riga specifica per numero

Per rimuovere una riga specifica:

sed '5d' file.txt

Questo comando elimina la riga 5 da file.txt.

7. Inserire una riga prima di una riga specifica

Per aggiungere una riga prima di una riga specifica:

sed '3i\Questa è una nuova riga' file.txt

Questo comando inserisce “Questa è una nuova riga” prima della riga 3.

8. Inserire una riga dopo una riga specifica

Per aggiungere una riga dopo una riga specifica:

sed '3a\Questa è una riga aggiunta' file.txt

Questo comando aggiunge “Questa è una riga aggiunta” dopo la riga 3.

9. Sostituire una parola in più file

Per sostituire il testo in più file contemporaneamente:

sed -i 's/Linux/Ubuntu/g' *.txt

Questo comando modifica tutti i file .txt nella directory, sostituendo “Linux” con “Ubuntu”.


Comandi avanzati Sed

1. Utilizzare più comandi Sed insieme

Per eseguire più modifiche contemporaneamente:

sed -i -e 's/Linux/Ubuntu/g' -e 's/Server/Cloud/g' file.txt

Questo comando sostituisce “Linux” con “Ubuntu” e “Server” con “Cloud” in file.txt.

2. Utilizzare Sed con espressioni regolari

Per sostituire numeri in un file:

sed 's/[0-9]/#/g' file.txt

Questa operazione sostituisce tutti i numeri con #.

3. Estrarre righe specifiche da un file

Per estrarre e visualizzare le righe dalla 5 alla 10:

sed -n '5,10p' file.txt

L’opzione -n impedisce la stampa dell’intero file, mostrando solo le righe 5-10.


Migliori pratiche per l’uso di Sed

🔹 Esegui sempre il backup dei file prima di usare -i – Evita la perdita accidentale di dati.
🔹 Utilizza espressioni regolari – Potenti per modifiche complesse.
🔹 Testa i comandi prima di applicare le modifiche – Esegui sed senza -i per vedere l’output.
🔹 Usa script per l’automazione – Combina sed con script di shell per elaborazioni in batch.


Conclusione

Il comando sed è uno strumento versatile ed efficiente per aggiornare i file in Linux. Che tu abbia bisogno di sostituire testo, eliminare righe o inserire contenuti, sed può automatizzare e semplificare queste attività.