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