Repository 32bit  Forum
Repository 64bit  Wiki

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

[RISOLTO]sed e loop

Messaggioda metrofox » lun gen 31, 2011 13:36

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 feb 01, 2011 15:49, modificato 1 volta in totale.
Avatar utente
metrofox
Linux 2.6
Linux 2.6
 
Messaggi: 758
Iscritto il: gio ago 07, 2008 11:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)

Re: sed e loop

Messaggioda targzeta » lun gen 31, 2011 13:57

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6156
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: sed e loop

Messaggioda metrofox » lun gen 31, 2011 21:17

Risolto, grazie mille spina :-)
Avatar utente
metrofox
Linux 2.6
Linux 2.6
 
Messaggi: 758
Iscritto il: gio ago 07, 2008 11:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Google [Bot] e 2 ospiti