Il comando sed o stream editor è un programma che puoi utilizzare per modificare file di testo in base a vari parametri. Il comando sed può essere utilizzato anche per la ricerca globale e le azioni di sostituzione. Alcune delle opzioni di comando comuni e il loro utilizzo sono riportati nella tabella seguente.
Opzione | Descrizione |
---|---|
-d | Elimina le righe che corrispondono a un modello o numero di riga specifico. |
-n,p | Stampa solo le righe che contengono il motivo. |
s | Sostituisci la prima occorrenza della stringa nel file. |
S,g | Sostituisci globalmente la stringa originale con la stringa sostitutiva per ogni occorrenza nel file. |
Sintassi
La sintassi generale del comando sed è:
# sed {'option/address/ action'} {file names}
Gli indirizzi indicano a sed di agire solo su determinate righe o di agire solo su testo che corrisponde a un determinato modello di espressione regolare. Sono facoltativi. Gli indirizzi sono seguiti dall'azione da eseguire quando viene trovata una corrispondenza. L'ultimo argomento è il nome del file di input. I parametri di opzione, indirizzo e azione sono in genere racchiusi tra virgolette singole.
Se si verifica l'errore seguente durante l'esecuzione del comando sed:
sed: command not found
puoi provare a installare il pacchetto seguente secondo la tua scelta di distribuzione:
Distribuzione del sistema operativo | Comando |
---|---|
Debian | apt-get install sed |
Ubuntu | apt-get install sed |
Alpino | apk aggiungi sed |
Arch Linux | pacman -S sed |
Kali Linux | apt-get install sed |
CentOS | yum install sed |
Fedora | dnf install sed |
Raspbian | apt-get install sed |
Esempi di comando sed
1. Sostituisci la prima occorrenza di un'espressione regolare in ogni riga di un file e stampa il risultato:
# sed 's/regular_expression/replace/' filename
2. Sostituisci tutte le occorrenze di un'espressione regolare estesa in un file e stampa il risultato:
# sed -r 's/regular_expression/replace/g' filename
3. Sostituisci tutte le occorrenze di una stringa in un file, sovrascrivendo il file (cioè sul posto):
# sed -i 's/find/replace/g' filename
4. Sostituisci solo sulle linee che corrispondono al modello di linea:
# sed '/line_pattern/s/find/replace/' filename
5. Elimina le linee che corrispondono al modello di linea:
# sed '/line_pattern/d' filename
6. Stampa le prime 11 righe di un file:
# sed 11q filename
7. Applica più espressioni trova-sostituisci a un file:
# sed -e 's/find/replace/' -e 's/find/replace/' filename
8. Sostituisci il separatore `/` con qualsiasi altro carattere non utilizzato nei modelli di ricerca o sostituzione, ad es. `#`:
# sed 's#find#replace#' filename