grep a regulární výrazy Josef Hajas [email protected] http://cs.felk.cvut.cz/~hajasj1/unix/
Vysázeno v LATEXu – p. 1/1
ˇ Co nás ceká grep: K cˇ emu slouží? Jak používat? ˇ pˇrepínaˇce grepu nejpoužívanejší regulární výrazy grepu mutace grepu a rozšíˇrené regulární výrazy regulární výrazy v jiných programech
Vysázeno v LATEXu – p. 2/1
grep Globaly search for Regular Expression and Print (skupina pˇríkazu˚ editoru ex) grep [options] regexp [file...] -i -c -l -v
case Insensitive Count List file names only negace Výrazu
Vysázeno v LATEXu – p. 3/1
grep Globaly search for Regular Expression and Print (skupina pˇríkazu˚ editoru ex) grep [options] regexp [file...] -i -c -l -v
case Insensitive Count List file names only negace Výrazu
Pouze GNU verze grepu -r hledej i v podadresáˇrích
Vysázeno v LATEXu – p. 3/1
grep: prˇíklady $ cd /home/stud/hajasj1/grep/ grep jako filter: $ ps -a | grep grep
Vysázeno v LATEXu – p. 4/1
grep: prˇíklady $ cd /home/stud/hajasj1/grep/ grep jako filter: $ ps -a | grep grep
grep jako vyhledávaˇc: $ grep root syslog
Vysázeno v LATEXu – p. 4/1
grep: prˇíklady $ cd /home/stud/hajasj1/grep/ grep jako filter: $ ps -a | grep grep
grep jako vyhledávaˇc: $ grep root syslog grep jako poˇcítadlo: $ grep -c root syslog
Vysázeno v LATEXu – p. 4/1
grep: prˇíklady $ cd /home/stud/hajasj1/grep/ grep jako filter: $ ps -a | grep grep
grep jako vyhledávaˇc: $ grep root syslog grep jako poˇcítadlo: $ grep -c root syslog grep jako Mr Propper: $ grep -v root syslog > ~/syslog.new
Vysázeno v LATEXu – p. 4/1
Magické regulární výrazy Proˇc regulární výrazy? Všechny koneˇcné jazyky jsou regulární. Reg. výraz je úplný popis regulárního jazyka. Teoreticky dobˇre zvládnuté. Dostateˇcneˇ obecné.
Vysázeno v LATEXu – p. 5/1
Magické regulární výrazy Proˇc regulární výrazy? Všechny koneˇcné jazyky jsou regulární. Reg. výraz je úplný popis regulárního jazyka. Teoreticky dobˇre zvládnuté. Dostateˇcneˇ obecné. Spoleˇcné rysy s expanzí shellu: [ ] Znak jedním z vyjmenovaných Vyˇradí/zapne speciální význam znaku
Metaznaky Zástupci znaku˚ . Libovolný znak [ˆ ] Ruzný ˚ od uvedených w (GNU) Znak slova: [a-zA-Z_0-9] Iterace pˇredchozího znaku * Libovolný poˇcet opakování {m,n} m až n výskytu˚
+ ?
(GNU) Alesponˇ jedno opakování (GNU) Nanejvýš jeden
Vysázeno v LATEXu – p. 7/1
Metaznaky Pozice výskytu ˆ Zaˇcátek ˇrádku $ Konec ˇrádku < > Hranice slova ˇ Pamet’ ( ) Skupina se zapamatováním 3 Tˇretí zapamatovaný
Vysázeno v LATEXu – p. 8/1
Prˇíklady použití metaznaku˚ ˇ k našemu blackhat pˇríteli: Zpet Jeho pokusy zaˇcaly cca v 21:00 ˇ eˇ se pˇrihlásil ve 21:33 Úspešn Apr 4 21:33:23 sunray1 sshd[1571]: [ID 800047 auth.info] Failed password for root from 62.245.93.38 port 55444 ssh2
Mutace grepu grep [-e regexp | -f file] [file...] fgrep = grep -F fast grep hledaný výraz se interpretuje jako cˇ istý text méneˇ nároˇcný na zdroje systému
Vysázeno v LATEXu – p. 10/1
Mutace grepu grep [-e regexp | -f file] [file...] fgrep = grep -F fast grep hledaný výraz se interpretuje jako cˇ istý text méneˇ nároˇcný na zdroje systému egrep = grep -E extended regexp
Vysázeno v LATEXu – p. 10/1
Mutace grepu grep [-e regexp | -f file] [file...] fgrep = grep -F fast grep hledaný výraz se interpretuje jako cˇ istý text méneˇ nároˇcný na zdroje systému egrep = grep -E extended regexp agrep approximate grep
Vysázeno v LATEXu – p. 10/1
Rozšírˇené regulární výrazy Místo znaku tu muže ˚ vystupovat celý podvýraz ˇ oproti základním regulárním výrazum Zmeny ˚ () Vytyˇcení podvýrazu pro iterace ˇ n Zpetná reference zde není možná {m,n} m až n výskytu˚ + Alesponˇ jedno opakování ? Nanejvýš jeden | Logické nebo
Vysázeno v LATEXu – p. 11/1
Rozšírˇené regulární výrazy: prˇíklad $ egrep ’ˆApr +4 21:[0123][0-9] (.*blackhat| .*62.245.93.38)’ syslog Apr 4 21:04:07 sunray1 su: [ID 810491 auth.crit] ’su root’ failed for blackhat on /dev/pts/19 ... Apr 4 21:33:23 sunray1 sshd[1571]: [ID 800047 auth.info] Failed password for root from 62.245.93.38 port 55444 ssh2 ...
Vysázeno v LATEXu – p. 12/1
Regulární výrazy za hranicemi grepu Jednoznakové regexp: sed, vi
Vysázeno v LATEXu – p. 13/1
Regulární výrazy za hranicemi grepu Jednoznakové regexp: sed, vi :1,$s/ˆ(.*)$/[BOLD]1[/BOLD]/c
Vysázeno v LATEXu – p. 13/1
Regulární výrazy za hranicemi grepu Jednoznakové regexp: sed, vi :1,$s/ˆ(.*)$/[BOLD]1[/BOLD]/c Rozšíˇrené regexp: awk urˇcují ˇrádky, kterých se operace týká používají se v nahrazování
Vysázeno v LATEXu – p. 13/1
Regulární výrazy za hranicemi grepu Jednoznakové regexp: sed, vi :1,$s/ˆ(.*)$/[BOLD]1[/BOLD]/c Rozšíˇrené regexp: awk urˇcují ˇrádky, kterých se operace týká používají se v nahrazování V perlu - zabudováno do syntaxe $radek =~s/&[ˆ;]*;//g; if ($radek =~/(.*?)/) print("$1 n");
Vysázeno v LATEXu – p. 13/1
Reference ˇ tyhle regulární výrazy, kde najdu víc? Bezva vec Pavel Satrapa: Regulární výrazy http://www.kit.vslib.cz/ satrapa/docs/regvyr/regvyr.pdf Jeffrey E. F. Friedl: Mastering Regular Expressions http://marecek.kup.to/trade/productview/10650/369/ Visual regexp: program pro odlazování regulárních výrazu˚ http://laurent.riesterer.free.fr/regexp/