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.
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.