SED, Inserire Testo Prima o Dopo Determinate Linee

Pubblicato da Yuri Carlenzoli | 12 aprile 2012

Ecco come con sed, da shell e script, è possibile inserire testo prima o dopo determinate linee di testo in files, utile sopratutto per processare files in batch.

SED-Inserire-Testo-Prima-Dopo-Linee-Files

Con tutti gli editor di testo anche avanzati ma semplici da usare presenti su Linux sicuramente qualcuno penserà che utilizzare la shell per modificare files è ormai antiquato ed anche sed è vecchio come programma, si, è vecchio sed però non per niente il suo nome deriva da "stream editor for filtering and transforming text", trasformare testo aggiungendone altro prima o dopo determinate linee/frasi infatti non è da tutti e sed può farlo, non è difficile e può venire utile, in questo post lo spiego.

Infatti, anche se tramite editor di testo è molto comodo modificare files, anche in batch, la linea di comando è insuperabile in certe situazioni, non solo quelle più difficili e/o per smanettoni, che potrebbero essere la modifica di files di un sito internet o script di programmazione, anche alle persone comuni può risultare utile usare la shell con cat o con sed per modificare files testuali, ad esempio per inserire in vari documenti di testo la data, il nome di chi ha creato il documento od altre situazioni simili; per processarli in batch l'unico requisito è che in tutti i files dev'esserci del testo uguale.

Ora, ipotizzando di avere come l'esempio che ho fatto dello screenshot un file a cui si vuole aggiungere del testo prima una determinata linea e dell'altro testo dopo una linea bisogna innanzitutto creare un file con estensione .sed ed inserirvi il testo che si vuole mettere prima e dopo in questo modo:

#Questo scriverà la riga 1 PRIMA della riga 2
/riga 2/i\
riga 1
#Questo scriverà la riga 5 DOPO la riga 4
/riga 4/a\
riga 5

Una volta fatto questo file che io ho chiamato "inserire.sed" tramite un comando di shell si andrà a dire a sed di eseguire i comandi presenti nel file il cui codice è riportato qui sopra nel file "prova.txt" e con l'output creare il file "prova1.txt" che conterrà le modifiche, il comando sarà quindi:

sed -f inserire.sed < prova.txt > prova1.txt

Per modificare il file preesistente invece di crearne uno nuovo, in uno script che richiamerà il comando qui sopra dovrete prima ridirigere l'output in un file temporaneo e poi rinominare il file temporaneo nel nome originale del file.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Moderazione dei commenti attiva. Il tuo commento non apparirà immediatamente.