Systemy operacyjne - lab. 9 ======================================================= 1- przeszukiwanie plikow lub danych z stdin grep [opcje] wyrazenie_regularne [pliki] grep slowo *.txt ls -l | grep ^d grep "[0-9]*" *.txt --color 2- wyrazenia regularne: znaki + operatory podstawowe . dowolny znak ^ poczatek linii, np. ^A linia zaczynajaca sie od A $ koniec linii [abc] a lub b lub c [a-zA-Z] dowolna litera [^0-9] dowolny znak procz cyfr ([^ dopelnienie zakresu) ^ab$ linia ab .*ok.* dowolny napis zawierajacy "ok" (takze samo "ok") [-^] myslnik lub daszek [^^] dowolny znak oprocz "^" np. sprawdz jaka jest roznica miedzy: grep --color "[^x]" f grep --color -v x f a* ciag liter "a" + ciag pusty (* operator powtorzenia) aa* jak wyzej bez ciagu pustego znaki specjalne \[ znak [ \* znak * \^ ^ \$ $ \. . \t tab \\ \ \< poczatek slowa \> koniec slowa \w jak [a-zA-Z0-9] rozszerzone + powtorzenie co najmniej raz (r+ = rr*) {n} powt n-krotne {n,m} co najmniej n-krotne, najwyzej m-krotne {,m} = {0,m} {n,} = co najmniej n-krotne ({1,} = +) ? 0 lub 1 krotne (? = {,1} \n backreference, where n is a single digit, matches the substring previously matched by the nth parenthesized subexpression of the regular expression a{5} aaaaa (wy)?nosi wynosi,nosi (Ala | Ola) ma Ala ma, Ola ma .* dowolny ciag znakow a|bc(d|e) a, bcd, bce \<[a-z]+\> slowo malymi literami (\<[a-z]+\>).*\1 tekst z powtorzonym slowem np. (a) (b) \2 \1 pasuje do tekstu: a b b a (a (b)) \2 pasuje do tekstu: a b b UWAGA: czasami nalezy objąć wyrazenie regularne w znaki cudzysłowu, np. grep -E "(a) (b) \2 \1" plik 3- opcje grep -v linie nie zawierajace wzorca -i male i duze litery -l wypisuje tylko nazwy plikow -L wypisuje tylko nazwy plikow nie zawierajace wzorca -num num linii przed/za -A num after line -B num before line -c liczba trafien -n number lines -E extended wyr reg -r rekurencyjne (dla katalogow) egrep same as grep -E fgrep '****' *.txt lancuchy tekstowe doslownie (szybszy niz grep) 4- wyszukiwanie plikow grep -rl ^abc * find . -type f -name "*.txt" -exec grep -l ^abc {} \; -q qiet, do not write anything on stdout find . -type f -name "*.txt" -exec grep -lq ^abc {} \; -exec rm -f {} \; -f rm without prompting for confirmation