Regularni vyrazy

Libor Pechacek farco na clnet.cz
Čtvrtek Říjen 21 12:03:22 CEST 1999


Pavel Kankovsky wrote:
> Da se to udelat mnoha ruznymi zpusoby, ale jeden specialne kreativni
> je tento:
> 
> sed
>   's/^F\([0-9]*\)\/JOB\.\([a-z]*\): queued by \([a-z]*\)\.'\
>   '\([0-9]*\) page.*to \(.*\)\.$)/\1:\2:\3:\4:\5/' | \
> while IFS=':' read job status user pages phone
> do
>         cokoli "$job" "$status" "$user" "$pages" "$phone"
> done

Konecne se ozval "opravdovy programator" a vnesl trochu kultury do teto
bitky "pojidacu kolacu". ;-)  Prirozene takto to napise kazdy, kdo tusi,
co je UNIX a jemu podobne systemy.

Casto ale vidim, ze lide (programatori, spravci) nevi, co je regularni
vyraz.  Jen pohledte na nazev tohoto threadu.

Regularni vyraz popisujejazyk (ve smyslu teorie automatu), potazmo
automat.  Regularni vyraz neudela vic, nez ze rekne: "Slovo na vstupu
patri/nepatri do jazyka ktery popisuji".  Je to presne co dela grep. 
Date mu radku vstupu a on rekne - ta radka obsahuje/neobsahuje slovo
patrici do jazyka popsaneho zadanym RV.

Zde viditelne pouziti sedu je uz neco jineho.  Je to substitucni
prikaz.  Ma za ukol vybrat nejdelsi retezec na radce odpovidajici
regularnimu vyrazu (mezi prvnimi lomitky) a nahradit jej retezcem
uvedenym mezi druhou dvojici lomitek.  Samotny RV je tady pouzivan ke
zjisteni "co nahradit".  Ne k samotnemu nahrazovani. 

Muze-li nekdo smysluplne doplnit vyklad o RV a automatech, s radosti jej
privitam.  Me znalosti z automatu jsou uz zchatrale jak anticke pamatky,
nicmene, jeste rozeznam RV o prikazu sedu. :-)

S pranim pekneho dne (noci) a omluvou za OT

					Libor Pechacek
-- 
Libor Pechacek <farco na clnet.cz>; ISO-8859-2 ready
PGP key: http://www.clnet.cz/~farco/pgp.txt
Sign&encryption key ID: 0x5DDE4353
Key fingerprint: E715 733C 8864 2A49 90A4  EAA6 257C CC00 5DDE 4353


Další informace o konferenci Linux