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: