[RISOLTO]sed e loop

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

[RISOLTO]sed e loop

Messaggio da metrofox »

Salve ragazzi, allora ho scritto uno script che per un file preso in input e una parola di ricerca in questo file la rimpiazza con un'altra e in più mette il numero del contatore come suffisso del nome... Ad esempio io ho un file del tipo

Codice: Seleziona tutto

immagine.jpg
immagine.jpg
    immagine.jpg
e queste "immagini" voglio rimpiazzarle con "foto_$i"

Allora con sed non funziona in quanto

Codice: Seleziona tutto

sed -e s/immagine/foto_$i/g file.txt
Rimpiazza tutto con:

Codice: Seleziona tutto

immagine1.jpg
immagine1.jpg
    immagine1.jpg
e non come voglio io:

Codice: Seleziona tutto

immagine1.jpg
immagine2.jpg
    immagine.3jpg
Come mai?
Ultima modifica di metrofox il mar 1 feb 2011, 15:49, modificato 1 volta in totale.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: sed e loop

Messaggio da targzeta »

Con sed è difficile incrimentare un contatore. Puoi utilizzare awk meglio:

Codice: Seleziona tutto

awk 'BEGIN{i=1};/immagine/{sub("immagine","foto" i++)};{print}' file.txt
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

Re: sed e loop

Messaggio da metrofox »

Risolto, grazie mille spina :-)

Rispondi