6. Filtry

Dokument: pdf (185.0 KB)
  • 6 stron
Opublikowany 2017-07-23 02:19:53

08.03.2017, 00*59Systemy Operacyjne - Lekcja 4 - Segment 1 Strona 1 z 6http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA4/SEGMENT6/MAIN.HTM6. FiltryFiltry to grupa programów służących do wyszukiwania wzorców i/lub przetwarzania plików tekstowych. Programy te są bardzo często wykorzystywane do tworzenia poleceń i aliasów powłoki, skrytów instalacyjnych oraz skryptów przeznaczonych do wykonywania złożonych zadań administracyjnych. Nie jest to jedyne zastosowanie filtrów, gdyż przydatne mogą być one wszędzie tam gdzie zachodzi konieczność nietrywialnego wyszukiwania danych w dużej liczbie plików lub w plikach o bardzo dużej objętości (często okoliczności te występują jednocześnie) - na przykład w zastosowaniach inżynierskich do przetwarzania wyników symulacji do postaci umożliwiającej wykonania żądanych zestawień i wykresów. (6.1) Program grep Program grep poszukuje w standardowym strumieniu wejściowym lub w plikach wejściowych wierszy, które pasują do podanego wzorca. Każdy znaleziony wiersz jest przesyłany w całości na standardowy strumień wyjściowy, o ile nie zastosowano opcji zmieniającej to zachowanie. Wzorzec ma postać dowolnego wyrażenia, w którym mogą wystąpić znaki specjalne. Postać wywołania programu jest następująca: grep [opcje] wzorzec [plik]... gdzie: wzorzec - wyrażenie opisujące poszukiwany wzorzec, plik - nazwa pliku wejściowego - jeśli pominięta grep czyta dane ze strumienia wejściowego, opcje - lista wybranych opcji . Znaki specjalne rozpoznawane przez program grep pokazane w tablicy 4.7: Tablica 4.7 Znaki specjalne programu grep Znak Znaczenie ^ Początek wiersza. $ Koniec wiersza. . Jeden dowolny znak. * Dowolna liczba wystąpień poprzedzającego wyrażenia (w tym zero wystąpień). [ ] Jeden dowolny znak z listy zawartej wewnątrz nawiasów. [ - ] Jeden dowolny znak z zakresu podanego wewnątrz nawiasów. \ Przywraca pierwotne znaczenie następnego znaku. Jak widać są to znaki, które są również znakami specjalnymi powłoki. Jeśli wyrażenie opisujące wzorzec zawiera takie znaki to powinno zostać umieszczone w apostrofach, np.: ls * | grep '^[Z].[a-d]*graf\.c$'. 08.03.2017, 00*59Systemy Operacyjne - Lekcja 4 - Segment 1 Strona 2 z 6http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA4/SEGMENT6/MAIN.HTM W ten sposób powłoka nie dokona interpretacji tekstu wzorca i zostanie ono przekazany w oryginalnej postaci programowi grep. Najczęściej stosowane opcje programu grep to: -c - podaje tylko liczbę dopasowanych linii, -n - dopisuje numer przed każdą dopasowaną linią, -v - wypisuje tylko te linie, które nie pasują do wzorca. Dostępne są też dwie odmiany programu grep: fgrep i egrep. Program fgrep dopuszcza stosowanie tylko uproszczonych wzorców, które nie zawierają żadnych znaków specjalnych. Inaczej mówiąc wzorzec jest dokładnie takim tekstem jakiego poszukujemy w danych wejściowych, np.: ps -ef | fgrep inetd W przypadku programu egrep stosować można wzroce o rozszerzonym zakresie znaków specjlanych. Niektóre dodatkowe znaki specjalne pokazano w tablicy 4.8. Tablica 4.8 Dodatkowe znaki specjalne programu egrep Znak Znaczenie + Liczba wystąpień poprzedzającego wyrażenia > 1. ? Liczba wystąpień poprzedzającego wyrażenia = 0 lub 1. {n} Poprzedzające wyrażenie powtarza się dokładnie n razy. (6.2) Edytor strumieniowy sed Program sed służy do edycji strumieni danych. Znajduje zastosowanie przy tworzeniu filtrów do przetwarzania wsadowego, przy edycji dużych plików, które nie mieszczą się w buforze, przy przetwarzaniu potokowym oraz w skryptach shellowych. Edytor sed przesyła strumień wejściowy lub zawartość plików wejściowych do strumienia wyjściowego, wykonując operacje edycyjne kolejno na każdej linii, zgodnie z podanym programem. Program zawiera polecenia, poprzedzone adresami linii wejściowych, do których powinny być zastosowane. Edytor kolejno kopiuje jedną linię do przestrzeni roboczej (do bufora roboczego) i stosuje do niej sekwencję tych poleceń, których adresy wskazują daną linię. Następnie przesyła linię do strumienia wyjściowego oraz czyści bufor roboczy. Niektóre polecenia wykorzystują bufor pomocniczy do zapamiętywania fragmentów tekstu. Wywołanie programu sed może przybrać jedną z następujących postaci: sed [-n] 'program' [plik_danych ...] sed [-n] -e 'program' [-e 'program']... [-f plik_z_programem]... 08.03.2017, 00*59Systemy Operacyjne - Lekcja 4 - Segment 1 Strona 3 z 6http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA4/SEGMENT6/MAIN.HTM [plik_danych...] sed [-n] -f plik-z-programem [-f plik_z_programem]... [-e 'program']... [plik_danych...] gdzie: program - program opisujący operacje edycyjne, -e 'program' - pobranie programu z linii polecenia, znaki ' ' zabezpieczają przed interpretacją elementów programu przez powłokę shell, -f plik_z_programem - pobranie programu z pliku plik_z_programem, plik_danych - plik wejściowy - jeśli pominięty to sed czyta dane ze strumienia wejściowego, -n - przesyła na wyjście tylko wskazane w ...

Tagi:

Komentarze do: 6. Filtry • 0