OT: Editace XML shell scriptem

Dan Lukes dan at obluda.cz
Sat Apr 24 19:25:49 CEST 2010


On 04/24/10 13:46, Zbyněk Burget:
> hlavne se vyznat v tech regularnich vyrazech - zmet lomitek,
> tecek, carek, hvezdicek...

Regularni vyrazy jsou ale esencialni zaklad pro celou radu dalsich 
uzitecnych utilit - pocinaje "grep", pres uz zminene "awk", az po, 
treba, perl.

Bez regularnich vyrazu prichazis o cely jeden stupen volnosti tohoto 
operacniho systemu ...

> 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... :-) )

Trivialne - nacte radek do bufferu (nez zaverecneho \n), provede operace 
narizene "programem" a obsah bufferu doplneny o \n vypise na vystup 
(pokud mu v tom nezabrani option -n nebo prikaz provadeneho programu).

To je jedna rovina a je trivialni - ta jedna veta to popisuje cele.

Druha rovina je pochopit syntaxi toho "programovaciho jazyka" - ale ta 
je az na par speku trivialni.

No a treti rovina je - o konkretnim algoritmu premyslet v itnencich 
toho, co tenhle jazyk nabizi. To je asi to nejslozitejsi, ale na druhou 
stranu - je to spis o praxi.

> A jeste jedna otazka nakonec - zkousel jsem jeste jednu fintu, a to
> konce radku nesmazat, ale vymenit za nejaky retezec (napr. neco jako
> ###newline###

Ja s oblibou pouzivam k tomuto ucelu ASCII znak "RS". Zaprve prakticky 
nemusim resit, jestli se v puvodnim textu nahodou nevyskytuje, za druhe 
- je stejne dlouhy jako puvodni oddelovac, coz je pro nektere upravy vhodne.

> Jen jsem narazil na to, ze v te substituci nemuzu nahrazovat za \n, ale musi tam byt opravdu escapovane
> zalomeni radku.

Manual sedu je v tomto ohledu velmi explicitni:
  ---------------------
To specify a newline character in the replacement string, precede it 
with a backslash.
  ---------------------

> opravdu to nejde obejt nejakym znakem

No, vlastne jo - backslash+LF
Nakonec, \n (kdyby to jim slo) by taky byl backslash a nejaky ASCII znak ...

Ale tusim, ze to mi asi jako reseni neuznas ...

> abych ten prikaz dostal na jednu radku?

Ale vzdyt ten prikaz je stale jedna radka. A jako jedna radka se take 
chova. A ze je na obrazovce opticky zalomeny ? To je ale treba hodne 
dlouhy radek taky - a porad je to jeden radek.

Nevim, kterou konkretni potiz presne resis, ale zatim odhaduju, ze 
vlastne zadnou - jde spis nejaky psychicky blok ;-)

					Dan





More information about the Users-l mailing list