K uvedeným příkladům a hlavně potom k vyhlášené soutěži mám jednu připomínku. Dokud byl uveden jenom první příklad, bral jsem to jako jednoduchou ukázku, která sice leccos opomněla, ale pro demonstrační účely stačí. Ale vyhlášením soutěže se situace poněkud mění. Tady by uz mělo jít o skutečně použitelný script.
Problém je v tom, že script je sice ve všech ukázkách deklarován pro použití na html souborech, ale pomíjí základní vlastnost HTML, tedy že oddělovačem může být jakékoliv bílé místo včetně NOVÉHO ŘÁDKU. A přitom varianta s vi i se sed (a myslím, že i ta s perlem) pracují řádkově, tedy načtou ze vstupu JEDNU ŘÁDKU a nad ní provedou náhradu.
I když použiji jako nahrazovaný vzor regulární výraz, ve kterém místo všech mezer uvedu 'nejméně jedno bílé místo', zpracuje mi to sice správně podobu <a(mezera)href, <a(mezera)(mezera)href a pod., ale selže to na <a(nová řádka)href :-(
Narazil jsem na to teď, když se snažím na serveru s mnoha sty stránkami nahradit několikařádkový starý kód Mr.Lin(x)e novým (navíc nevím, jak mi ho za tu dobu různé editory při zalamování přeformátovaly)...
Teď poněkud uhýbáte. Ten příklad s (a href=) jsem zvolil jenom pro jednoduchost. Jak jsem uz psal, jde mi obecně o víceřádkové náhrady, přesněji o náhrady, kde konec řádku nehraje roli (stejně jako v HTML kódu).
Mimochodem, já v tom mém textu nikde nepsal, ze v tom (a href=) chci měnit jenom obsah toho href, co když jsem chtěl místo celého tagu (a href=) dát něco jiného (třeba SSI sekvenci, nebo javascript, které ho vygenerují) :-)
A na konci jsem úplně konkrétně psal, že jsem na to narazil při výměně kódu Mr.Lin(x)e a to je (pokud jej neznáte) náhrada starého cca pětiřádkového javascriptu za nový asi osmiřádkový...