Vlákno názorů k článku Jak na hromadné nahrazování textu? (2) od Jiří Svatoň - K uvedeným příkladům a hlavně potom k vyhlášené...

  • Článek je starý, nové názory již nelze přidávat.
  • 25. 5. 1999 21:16

    Jiří Svatoň (neregistrovaný)

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

  • 26. 5. 1999 10:43

    Leos literak (neregistrovaný)

    K prikladu s (A href='sdfsd'): Toto se da vyresit
    jednoduse zmenou regularniho vyrazu na

    s/href='sdfsd' -) takto se vezme jen odkaz a nove
    radky mezi (a a href nejsou problem.

  • 6. 6. 1999 23:57

    Jiří Svatoň (neregistrovaný)

    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ý...

  • 24. 3. 2009 23:17

    bez přezdívky
    Jo, taky bych chtěl dělat v sedu víceřádkové náhrady, ale nemůžu se dobrat, jak na to. Stačilo by prostě dát celý soubor do pattern space a bylo by... kdyby to sed uměl. (zdá se, že neumí)