martedì 27 marzo 2012

SED: sostituire la regexp trovata aggiungendo qualcosa

Dato che ogni volta perdo un sacco di tempo per ricordarmi queste due cose le trascrivo per usi futuri:

L'opzione -i di sed mi permette di modificare lo stesso file di input,  mentre il carattere "&" rappresenta il risultato dell'espressione regolare usata nel costrutto di sostituzione, quindi

sed -i 's/[0-9]*/&bummolo/g' test.txt

Modifica il file di input test.txt e ogni volta che trova una sequenza numerica concatena a questa la parola "bummolo".

In alternativa si possono usare le opzioni avanzate per le regexp con l'opzione "-r", in questo caso, la regexp tra parentesi viene individuata dal carattere speciale "\1"

sed -ri "s/([0-9]*)/+39\1/g" test.txt

Se avessi più pezzi di regexp potrei usare "\2", "\3" e così via.

Qui un utile sito di documentazione: http://www.grymoire.com/Unix/Sed.html

Semplice e banale

Nessun commento:

Posta un commento