[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [BASH] script di sostituzione tra tag



Gabriele Pongelli wrote:
applico il cambio su più righe (quello che vedi qui sotto devi metterlo tutto su una riga):
$ echo -e "[code] abc\n [i]def\n[/i]\n ghi [/code]" \
| tr "\n" "æ" | sed \
"s/\(\[code\][^\[]*\)\[i\]\([^\[]*\)\[\/i\]\([^\[]*\[\/code\]\)/\
\1<\2>\3/" | tr "æ" "\n"

ci stiamo avvicinando alla soluzione :-D

bene

modificando il sed con "/g" alla fine, ottengo giustamente

ouch!
È vero, mi ero dimenticato di indicare di reiterare la ricerca/sostituzione più volte in ogni riga

basta che però aggiungo un altro pezzo (copiato dal testo che devo convertire)
[code]nameserver [i]<ip_dns_primario_fornito_dal_provider>[/i]
nameserver [i]<ip_dns_secondario_fornito_dal_provider>[/i][/code]
ed ecco che non funziona più :-(

per forza ... stai imbrogliando! ;-)
il tag [i]..[/i] è ripetuto due volte e non una volta sola come da specifiche.

In questo caso basta che:
1) racchiudi la parte che si può reiterare più volte in parentesi tonde
2) metti un + fuori dalle parentesi tonde (se deve essere presente almeno una volta) o * (se può anche non essere presente) o ... 3) aggiusti la parte di sostituzione ignorando la posizione delle parentesi tonde inserite

Quindi devi vedere bene come può essere formata una stringa da convertire e estrarre la regola generale

Ciao
Davide

--
Dizionari: http://linguistico.sourceforge.net/wiki
Esci dall'illegalità: utilizza OpenOffice.org:
http://linguistico.sf.net/wiki/doku.php?id=UsaOOo
Non autorizzo la memorizzazione del mio indirizzo su outlook



Reply to: