Vyhladavanie podretazcov (regularnych vyrazov) v suboroch
grep | regexp subory | najde vsetky vyskyty regularneho vyrazu regexp v suboroch subory vypise meno suboru a prislusny riadok |
grep -n | regexp subory | ako grep ale vypisuje aj cisla riadkov |
grep -i | regexp subory | ako grep, v regularnom vyraze nerozlisuje medzi velkymi a malymi pismenami |
Regularne vyrazy
Reg Vyraz | Priklad vyrazu | Priklad zahrnutych retazcov | Priklad vylucenych retazcov | |
znak | normalne znaky (cisla, pismena) su regularne vyrazy reprezentujuce seba. | toto | toto | |
. | Akykolvek znak | t.t | tot tut tat ... | oto tt |
\(expr\) | To iste ako expr | \(toto\) | toto | |
expr* | Opakovanie expr lubovolne vela krat (0-n krat) | t* | t tt ttt tttt ... | ta taa ata |
to*t | tt tot toot tooot ... | toat ttt | ||
\(toto\)* | toto totototo ... | |||
expr\+ | Opakovanie expr aspon raz (1-n krat) | to\+t | tot toot tooot ... | tt |
[znak1znak2...] | Lubovolny znak zo znakov znak1 znak2 ... | t[oua]t | tot tut tat | tet |
[znak1-znak2] | Lubovolny znak s ASCII kodom z intervalu od znak1 po znak2 | t[a-c]t | tat tbt tct | tot tut |
[A-Z0-9] | A 0 B 7 | a b | ||
[^znak] | Lubovolny znak okrem znaku znak | t[^o]t | tut tat ... | tot |
[^znak1-znak2] | Lubovolny znak okrem znakov s ASCII kodmi z intervalu znak1 po znak2 | t[^c-z0-9A-Z]t | tat tbt ... | tct t0t tBt |
\(expr1 \| expr2\) | Lubovolny z dvoch podvyrazov expr1 a expr2 | t\(aa\|bb\)t | taat tbbt | tabt |
\b | Prazdny retazec na zaciatku a konci slova | \btoto\b | toto | tototo |
^ | Prazdny retazec na zaciatok riadku | |||
$ | Prazdny retazec na konci riadku |
Priklady na pouzitie prikazu grep:
Cvicenia:
1.) Dokoncite cvicenia z minuleho tyzdna. 2.) Napiste prikaz, ktory prehlada subor a najde vsetky riadky ktore obsahuju identifikator (t.j. retazec pozostavajuci z pismen a cislic) konciaci jedinou cislicou. T.j. za poslednym pismenom je prave jedna cislica. Tomu zodpoveda napriklad identifikator t1 ale nie t21. 3.) Napiste prikaz, ktory vyhlada vsetky riadky obsahujuce retazec 't1' alebo retazec 't2'. 4.) Napiste prikaz, ktory vyhlada vsetky riadky obsahujuce retazec 't1' a sucasne retazec 't2'. 5.) Napiste prikaz, ktory vyhlada vsetky riadky obsahujuce vyvolania a definiciu funkcie createVarHandler ale nie napr. fciu 'createVarHandlersForExprs'. 6.) Napiste prikaz, ktory vypise len riadky obsahujuce priradenie do premennej 'l' ale nie testy na rovnost (t.j. vypise riadky l=0; ale nie napriklad l == xy). |

