OT: Editace XML shell scriptem

Zbyněk Burget zburget at burgnet.cz
Sat Apr 24 13:46:08 CEST 2010


Dne 23.4.2010 20:59, Dan Lukes napsal(a):
> On 04/23/10 20:02, Zbyněk Burget:
>>> sed
>>> '/<device>/,/<\/device>/{/<device>/{h;D;};/<\/device>/{g;s/\n//g;p;D;};H;D;};'
>>>
>
> SEDem asi takhle: '/XXXXXX/s;\(<enable>\).*\(</enable>\);\1yes\2;'
> kde XXXX je vyraz, kterym bych vybral ten radek, ktery chci menit (ja uz
> si presne nepamatuju zadani a tudiz podle ceho se spravny radek poznal)

Tak neco podobneho bych asi stloukl, ale takhle je to opravdu genialne 
elegantni.

>
>> Jeste to ma jednu mouchu, ale to uz je drobnost (z vysledku vypadne
>> ukoncovaci tag </device>.
>
> Aha, vypadlo pismenko
> melo tam byt
> {H;g;s/\n//g;p;D;}
>
...

> sed je dost "jednosmerny" programovaci jazyk. Jde v nem (relativne)
> snadno psat, ale z napsaneho nelze zjistit co to ma delat ;-)

tak to uz jsem zjistil davno - obcas poznat, co ma delat je nadlidsky 
ukol - hlavne se vyznat v tech regularnich vyrazech - zmet lomitek, 
tecek, carek, hvezdicek...

>
> Ale ano, taky za to mohla moje chyba - misto toho, abych to napsal jako
> 1. /<device>/{zpracovani prvniho;continue}
> 2. /</device>/{zpracovani posledniho;continue}
> 3. (bez podminky) zpracovani tela a continue
>
> mel jsme pocitat s tim, ze to po me budes cist a mel jsem to napsat jako:
>
> 1. /<device>/{zpracovani prvniho;continue}
> 2. /<\/device/!/ zpracovani tela a continue
> 3. (bez podminky) {zpracovani posledniho;continue}
>
> Bylo by to o dost citelnejsi.

No, ted uz je mi to opravdu jasne - ja v prvni rade byl mimo, jak sed 
zpraovaval cely ten vyraz - ted bych rekl, ze zacinam chapat, jak 
vlastne funguje (konecne po letech... :-) )

Jak jsem psal, lide, kteri sed dokazou pouzivat v cele jeho krase (a 
nejen jako obycejnou utilitu pro substituce, maji muj hluboky obdiv.

A jeste jedna otazka nakonec - zkousel jsem jeste jednu fintu, a to 
konce radku nesmazat, ale vymenit za nejaky retezec (napr. neco jako 
###newline###), ktery na konci zase vymenim za \n a vysledny xml soubor 
bude hezky citelny, jako na zacatku. Jen jsem narazil na to, ze v te 
substituci nemuzu nahrazovat za \n, ale musi tam byt opravdu escapovane 
zalomeni radku. opravdu to nejde obejt nejakym znakem, abych ten prikaz 
dostal na jednu radku?


-- 
Zbyněk Burget
Nádražní 224
798 26 Nezamyslice

tel: 588 580 000, 739 930 931
IČ:  606 88 220
DIČ: CZ7210184674


More information about the Users-l mailing list