Hromadne nahrazovani velka na mala - jak optimalizovat
Ivo Panacek
ivop na regionet.cz
Úterý Duben 1 13:55:47 CEST 2003
On Út, 2003-04-01 at 13:32, Miroslav BENES wrote:
> Preji krasny den !
>
>
> Mam problem - potrebuji zoptimalizovat hromadne nahrazovani
> textu. Jde o zdrojaky, ve kterych se vyskytuji odkazy na jine
> soubory (zxdrojaky nebo spustitelne moduly). V soucasne dobe to
> jede an DOSu a predelavam to do linuxu.
> Krome os-depend volani je jeste problem s nazvy souboru. Na DOSu
> byly case-insensitive, takze se ve zdrojacich vyskytuje napr.:
> {K_DEFPAR.I}
> {K_DefPar.I}
> {K_Defpar.i}
> apod.
> Vsechna jmena jsou ted malymi pismeny, ale potrebuju jeste ty
> zdrojaky projit a vsude to opravit. Protoze nevim na ktera jmena
> souboru je nekde odkaz, udelal jsem si seznam vsech souboru a z
> nich jsem vygeneroval nahrazovaci pravidla v teto podobe :
>
> ...
> | sed \
> ....
> -e 's/[kK]\_[dD][eE][fF][pP][aA][Rr]\.[iI]/k\_devpar\.i/g' \
> ....
>
> Takovych pravidel je cca 14500. Prikazu sed jsem musel pouzit
> vicero, protoze vsechna nahrazeni najednou nebyl ochotny
> spolknout. Problem je, ze nahrazovani trva velice dlouho - na
> malem kousku (55 souboru, cca 150 kiB] to na P4/2GHz na 2.5GHz s
> 512MB RAM a rychlymi disky trva skoro 5 minut.
>
>
> Je nejaka cesta jak to zoptimalizovat ?
> Pripadne je neco vhodnejsiho na prevod na mala pismena ? Neco
> jako "tr [:upper:] [:lower:]", ale aplikovane jen na vybrany
> seznam slov ?
Rozhodne bych doporucil pouzit perl:
1) seznam souboru lze nasat do pameti (jedno velke pole)
pro ucely nahrazovani (ono se do te pameti vejde dost)
2) u regularniho vyrazu v perlu muze byt
parametr /i, ktery znamena case insensitive, cimz
se to vyrazne zjednodusi
ivo
Další informace o konferenci Linux