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 |
grep -o | regexp subory | Vypisuje len tie casti riadkov zodpovedajuce hladanemu vyrazu. |
grep -v | regexp subory | Inverzne hladanie. Vypisuje iba riadky neobsahujuce retazec zodpovedajuci regularnemu vyrazu. |
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 |
Vyhladaj (pravdepodobne) vsetky priradenia do premennej "s_symbolTab"
vo vsetkych zdrojovych suboroch v aktualnom adresari.
guma:vittek:~/csolve/src>grep -n "s_symbolTab.*=" *.c semact.c:379: s_symbolTab = cscope; semact.c:445: s_symbolTab = cscope;Vyhladaj vsetky vyvolania funkcie "fatalError": guma:vittek:~/csolve/src>grep -n "\bfatalError\b" *.c gen.c:28: fatalError(ERR_ST, tmpBuff); main.c:92: if (yyin == NULL) fatalError(ERR_CANT_OPEN, s_inputFile); main.c:98: if (ccOut == NULL) fatalError(ERR_CANT_OPEN, s_cFile); commons.c:112:void fatalError(int errCode, char *mess) { commons.c:125: fatalError(ERR_INTERNAL_CHECK,tmpBuff); runtime.c:295: fatalError(ERR_INTERNAL,tmpBuff); semact.c:117: fatalError(ERR_ST, bbb); |
1.) Skopirujte subor cvika-grep.c do svojho pracovneho adresara. 2.) Napiste prikaz, ktory prehlada subor cvika-grep.c a vyhlada vsetky riadky obsahujuce vyvolania a definiciu funkcie createVarHandler. 3.) Podobne ako v cviceni 2 napiste prikaz, ktory prehlada subor cvika-grep.c a vyhlada vsetky riadky obsahujuce vyvolania a definiciu funkcie createVarHandler ale nie funkciu 'createVarHandlersForExprs'. 4.) Napiste prikaz, ktory prehlada subor cvika-grep 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. 5.) Napiste prikaz, ktory vyhlada vsetky riadky obsahujuce retazec 't1' alebo retazec 't2'. 6.) Napiste prikaz, ktory vyhlada vsetky riadky obsahujuce retazec 't1' a sucasne retazec 't2'. 7.) 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). |