Vlákno názorů k článku Jak na hromadné nahrazování textu? od Robert Wolf - Mam k tomu clanku par poznamek: A) zbytecne pouzivani...

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

    Robert Wolf (neregistrovaný)

    Mam k tomu clanku par poznamek:
    A) zbytecne pouzivani perlu. stejne to lze udelat
    i v shellu
    for L in `find . -name *.html`;do sed -e '...';done
    jedna radka a je to OK (u toho find jsou zpetny apostrofy)
    a pokud to chcete jenom v aktualnim adresari,
    tak staci pouze sed -e '...'

    B) vetsina lidi asi pouziva Linux a obvykle RedHat
    nevim jak jinde ale na RH je vi akorat link na vim
    takze jestli ma vi a vim jiny regularni vyrazy, tak
    to nebude fungovat, navic vim ma trosku odlisne
    reg.vyrazy od perlu, takze pro perl se je ucte z
    man perlre a pro vim se je ucte z helpu vimu

    C) dalsi vec jsou priklady reg.vyrazu:
    vyraz ma*ka v zadnem pripade (ani ve vimu ani v perlu)
    nenajde slova matka, maska. totiz s reg.vyrazama je to
    asi takhle:
    . znak tecka zastupuje jakykoliv znak
    * udava, ze se PREDCHOZI znak muze opakovat 0 a vickrat
    + udeva opakovani PREDCHOZIHO znaku 1 a vicekrat
    ? udava opakovani PREDCHOZIHO znaku 1 nebo 0 krat
    {,n} predchozi znak se bude opakovat max. N-krat
    {m,n} predch.znak se musi opakovat minimalne M-krat
    a maximalne N-krat
    {m,} znak se musi opakovat minimalne M-krat
    {m} znak musi byt presne M-krat

    pokud chcete opakovat posloupnost treba ABC,
    tak se ta posloupnost uzavre do kulatych zavorek a
    za zavorku se prida pocet, napr. (ABC){3,5} najde
    posloupnost trojice ABC a to kdyz bude tahle trojice
    za sebou trikrat az petkrat, cili
    ABCABC ne
    ABCABCABC jo
    ABCABCABCABC jo
    ABCABCABCABCABC jo
    a delsi uz zase ne
    pokud chcete nechat hledat znaky *,+,(,),/ atd.,
    musite pred ne vlozit znak \, znak / se pouziva na
    otevreni a uzavreni regularniho vyrazu, ale muzete misto
    nej pouzit i jiny znak a pak muzete v reg.vyrazu pouzit
    pouze znak / bez \. napr. pri hledani textu http://
    je dobre pouzit vyraz
    !http://! , kde zavorky reg.vyrazu bude znak vykricnik
    je toho jeste vice, ale to by bylo opravdu na vlastni
    clanek. Tohle totiz plati u PERLu,
    VIM pouziva specialni znaky trosku jinak, napr.
    co v PERLu znamena znak +, to se ve VIMu musi napsat
    jako \+ atd. a take jeste zalezi na nastaveni
    magic. Prostudujte skutecne man perlre, man grep,
    man sed a help ve VIMu.

    D) navic tenhle vyraz ma dve chyby:
    g/HREF='http://www.domena.org/~uzivatel/adresar//s//HREF='/g

    1) / nelze pouzit v reg.vyrazu, kdyz je / jako
    zavorky reg.vyrazu. Musi se bud pouzit jine zavorky
    nebo se pred znak / v reg.vyrazu musi zadat \
    2) znak ~ ma ve vimu specialni vyznam, takze taky
    potrebuje pred sebe znak \

    E) pokud by nekdo chtel delat s vim a sed na MSDOS/WIN
    tak muze, staci jit na adresy

    ftp://ftp.vslib.cz/disk2/vim

    a sed je v

    ftp://ftp.zcu.cz/pub/simtelnet/gnu/djgpp/v2gnu/sed302b.zip


    Zdravim


    Wolf.

    P.S.: Sorry za preklepy a pripadne chyby, ale melo
    by to byt OK, ale nejsem regularni a VI guru:-)
    takze chybicka se mozna vloudi

  • 11. 5. 1999 17:16

    Robert Wolf (neregistrovaný)

    Tady to pokracuje!!!!

    Tohle totiz plati u PERLu,
    VIM pouziva specialni znaky trosku jinak, napr.
    co v PERLu znamena znak +, to se ve VIMu musi napsat
    jako \+ atd. a take jeste zalezi na nastaveni
    magic. Prostudujte skutecne man perlre, man grep,
    man sed a help ve VIMu.

    D) navic tenhle vyraz ma dve chyby:
    g/HREF='http://www.domena.org/~uzivatel/adresar//s//HREF='/g

    1) / nelze pouzit v reg.vyrazu, kdyz je / jako
    zavorky reg.vyrazu. Musi se bud pouzit jine zavorky
    nebo se pred znak / v reg.vyrazu musi zadat \
    2) znak ~ ma ve vimu specialni vyznam, takze taky
    potrebuje pred sebe znak \

    E) pokud by nekdo chtel delat s vim a sed na MSDOS/WIN
    tak muze, staci jit na adresy

    ftp://ftp.vslib.cz/disk2/vim

    a sed je v

    ftp://ftp.zcu.cz/pub/simtelnet/gnu/djgpp/v2gnu/sed302b.zip


    Zdravim


    Wolf.

    P.S.: Sorry za preklepy a pripadne chyby, ale melo
    by to byt OK, ale nejsem regularni a VI guru:-)
    takze chybicka se mozna vloudi

  • 11. 5. 1999 17:24

    Robert Wolf (neregistrovaný)

    A vloudila se chybicka:

    V bode A) jsem chtel rict, ze pomoci sedu pouze v aktualnim adresari to jde pomoci prikazu
    sed -e '...' *.html

    kde ... je reg.vyraz neco jako
    s!HREF='http;//www.server.org/\~uzivatel/!HREF='!gi

    to g na konci znamena globalne-vickrat v jedne radce, coz se muze stat, ze na jedne radce bude vice odkazu

    a to i znamena ignore-case, coz je dost dobre, protoze pokud nekdo zapise http misto HTTP, tak uz by to nas stary regularni vyraz nenasel

    Wolf