sed
sta per editor di flussi. È un editor basato su riga di comando per Linux. L'uso comune di sed è per la modifica dei file come parte di uno script di automazione in Linux, poiché i normali editor richiedono l'input dell'utente attivo e non possono modificare i file al di fuori delle schermate dell'editor. Sed è più comunemente usato per fare una ricerca e sostituzione dalla riga di comando.
Questo tipo di editor di testo può anche essere classificato come editor di testo non interattivo.
Vediamo alcune opzioni comuni per modificare i file utilizzando Sed. Prenderemo come esempio il seguente file:
$: cat test.txt Un veloce cane marrone saltò sul gatto pigro. Sistema operativo Linux. La foresta vicino a casa mia ha un gatto oltre ai lupi.
Cerca e sostituisci
Per cercare una stringa in un file e sostituirla con un'altra stringa, eseguire:
sed -i "s/cat/fox/g" test.txt
qui, il -io
flag indica a sed di scrivere le modifiche nel file. Senza questa bandiera, sed
visualizzerà solo il file con la stringa modificata.
Nelle virgolette abbiamo s/gatto/volpe/g
. Il S
è per il comando cerca e sostituisci di sed
. Quindi abbiamo la stringa da cercare, che è gatto
. Quindi la stringa con cui sostituirlo, ad es. Volpe
. Infine, abbiamo l'optional G
, che istruisce sed
per sostituire tutte le occorrenze su tutte le righe del file. Senza il G
, sed sostituirà solo la prima occorrenza di gatto
su ogni riga.
Regex può essere utilizzato anche qui.
sed -i "s/f[a-z]*\./cat\./g"
Inserire
Per inserire del testo prima di una riga con una stringa corrispondente, utilizzare:
sed -i "/cat/i Start:" test.txt
Qui, gatto
è la stringa cercata e Inizio:
è la stringa da inserire prima della riga in cui si trova la stringa cercata.
Allo stesso modo, per inserire del testo dopo una riga, usa:
sed -i "/volpe/a Fine." test.txt
Eliminare
Per eliminare una riga contenente una sottostringa, utilizzare:
sed -i "/Linux/d" test.txt
Per eliminare una riga con numero di riga, ad es. la prima riga, usa:
sed -i '1d' test.txt
Combinare più funzioni
Per combinare più funzioni, ad es. cerca e sostituisci, elimina, in un comando, -e
bandiera può essere utilizzata.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Saluti!