Repository 32bit  Forum
Repository 64bit  Wiki

[RISOLTO]sed e loop

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
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 dell'ultima regola 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 14: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 16:49, modificato 1 volta in totale.
Avatar utente
metrofox
Linux 2.6
Linux 2.6
 
Messaggi: 758
Iscritto il: gio ago 07, 2008 12: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 14: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
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: 5914
Iscritto il: gio nov 03, 2005 15: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 22:17

Risolto, grazie mille spina :-)
Avatar utente
metrofox
Linux 2.6
Linux 2.6
 
Messaggi: 758
Iscritto il: gio ago 07, 2008 12: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: Nessuno e 1 ospite