Come usare Sed in Linux

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!