Estrarre, modificare, cancellare una parte di file da Linux bash con sed

L’estrazione di alcune righe da un file di testo è possibile usando il comando sed. Ad esempio, per estrarre dalla riga 5 alla riga 10 del file pippo.txt, basta digitare nel terminale:

sed -n 5,10p pippo.txt

Per estrarre dalla riga 5 alla 10 e poi la 15 basta digitare:

sed -n -e 5,10p -e 15p pippo.txt

Se si vuole estrarre dalla riga 5 alla fine del file:

sed -n '5,$p' pippo.txt

Se si vuole creare un nuovo file, es new.txt, con le righe estratte, basta redirezionare l’output in un nuovo file:

sed -n 5,10p pippo.txt>new.txt

Per le versioni di sed più recenti (> 4.1.4) si può usare direttamente l’opzione -i per ricrivere nello stesso file, es:

sed -i -n 5,10p pippo.txt

modifica il file pippo.txt lasciando solo le righe dalla 5 alla 10.

Infine, un’altra operazione molto comoda da fare con sed è la possibilità di modificare il contenuto di un file.

Ad esempio, per eliminare le righe che contengono, ad esempio, la stringa “Cancellami” basta digitare:

sed -i '/Cancellami/d' pippo.txt

oppure, per modificare la stringa “Cancellami” in “Mantienimi” basta digitare:

sed -i 's/Cancellami/Mantienimi/g' pippo.txt

dove la lettera g finale serve per abilitare il global replace, ovvero sostituisce la parola anche se è ripetuta più volte nella stessa riga.

Vediamo invece come sostiture la stringa “Cancellami” in “Mantienimi” solo se nella riga è presente la parola “Controllami“:

sed -i -e '/Controllami/s/Cancellami/Mantienimi/' pippo.txt

enjoy!

Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui

Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂



Commenta