PDA

View Full Version : [Script Bash] problema sostituzione stringhe


sacara
19-06-2005, 20:11
Buongiorno,

ho un problema con uno script bash .

Allora iniziamo col dire che ho 3 file :
sostituzione1.txt
sostituzione2.txt
modello.html


nel file sostituzione1.txt c'è:
UNO
DUE
TRE
QUATTRO
CINQUE

nel file sostituzione2.txt c'è:
SEI
SETTE
OTTO
NOVE
DIECI


il modello.html è una cosa del tipo:

blabla --stringa1-- bla bla

bla bla --stringa2-- blu bli

--stringa1-- --stringa2--

ciaociaociao


-------------------------------------------------------
Vorrei sostituire nel modello.html
--stringa1-- e --stringa2--
rispettivamente con la prima riga di sostituzione1.txt e sostituzione2.txt
e questo iterativamente finchè non finiscono le righe in sostituzione1.txt

ad esempio

blabla UNO bla bla

bla bla SEI blu bli

UNO SEI

ciaociaociao


successivamente sarà:
blabla DUE bla bla

bla bla SETTE blu bli

DUE SETTE

ciaociaociao



Ora veniamo al problema ....

sono riuscito a creare uno script che mi sostituisce --stringa1-- ma non riesco a sostituire --stringa2--

ora vi posto lo script:



#!/bin/bash
#crea_file.sh


FILE=`cat sostituzione1.txt`
#elenco

stringa_sostituire=--stringa1--
echo


for file in $FILE
do
echo $file
cat modello.html > appoggio.html
cat appoggio.html | sed 's/'$stringa_sostituire'/'$file'/g' > pagina_$file.php;

done

exit 0


Potete darmi una mano ?


Grazie

kingv
20-06-2005, 09:53
non ho capito la sostituzione che devi fare, dal primo file leggi le parole da cercare e dal secondo quelle che le devono sostituire?

sacara
20-06-2005, 11:28
no dal primo le parole che andranno a sostituire --stringa1-- e dal secondo le parole che andranno a sostituire --stringa2--

ad esempio:

blabla UNO bla bla

bla bla SEI blu bli

UNO SEI

ciaociaociao


--stringa1-- e --stringa2-- del modello.html sono state sotituite con UNO e SEI

:help:

kingv
20-06-2005, 12:10
scusa non capisco, se in sostituzione1.txt ho diverse righe il primo giro --stringa1-- verrà sostituito dalla prima riga del file, ma poi non avverrà alcuna sostituzione perchè tutte le occorrenze saranno già state sostituite dal primo passaggio, no?

sacara
20-06-2005, 12:46
farmi capire non è il mio forte :D

allora , con lo script che ho fatto io il risultato sarà :



blabla UNO bla bla

bla bla --stringa2-- blu bli

UNO --stringa2--

ciaociaociao


salvato nel file pagina_UNO.php;



poi al secondo ciclo di for sarà :



blabla DUE bla bla

bla bla --stringa2-- blu bli

DUE --stringa2--

ciaociaociao



salvato nel file pagina_DUE.php;

etc.. fino a che non finisco le righe in sostituzione1.txt


il mio problema è che devo sostituire anche --stringa2--
(che nel primo ciclo dovrebbe essere sostituito con SEI , nel secondo con SETTE etc..)
ma non sò come fare.



Non sò se mi sono spiegato meglio... grazie Kingv!

kingv
20-06-2005, 13:28
#!/bin/bash

arr_uno=(`cat sostituzione1.txt`)
arr_due=(`cat sostituzione2.txt`)


for (( i = 0 ; i < ${#arr_uno[@]} ; i++ ))
do
cat modello.html | sed -e "s/--stringa1--/${arr_uno[$i]}/g" | sed -e "s/--stringa2--/${arr_due[$i]}/g" > pagina$i.php
done

sacara
20-06-2005, 21:17
#!/bin/bash

arr_uno=(`cat sostituzione1.txt`)
arr_due=(`cat sostituzione2.txt`)


for (( i = 0 ; i < ${#arr_uno[@]} ; i++ ))
do
cat modello.html | sed -e "s/--stringa1--/${arr_uno[$i]}/g" | sed -e "s/--stringa2--/${arr_due[$i]}/g" > pagina$i.php
done


peccato non ci sia la faccina in genuflessione.

ti ringrazio ! obbligato

Marco

kingv
20-06-2005, 21:58
ti ringrazio ! obbligato



figurati, di niente :)