Napisane przez mediologia dnia . Wysłane Rozdział 8 - Wyrażenia regularne.

8.5 Polecenie sed z wyrażeniami regularnymi -zadania

 

Przetestujemy teraz funkcjonowanie sed używając do tego celu tego samego pliku dataplik którego zawartość drukujemy powtórnie poniżej.

Nazwa            symbol           Imię i nazwisko         Liczba              Plan         liczba             liczba

regionu           regionu         dyrektora   per.       oddziałów          w %        towarów         personelu

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

 

Zadanie 1. 

 

$  sed  ’/Preg/p’  dataplik

 

Kregkato         KA                  AB Kowalski                23              .98.              \3\              88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                 Krzysztof Wrak           25              .45.              \2\               77

Pregpod          PO                 Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                    19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk           14               .54.              \5\              85

Pregpod          PO                 Zygmunt Malina          25              .45.              \2\               54

Pregpod          PO                 Zygmunt Malina          25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska             35              .98.              \4\               91

Greggda          GD                   DA  Polak                  58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                19              .54.              \1\               25

 

Wyjaśnienie: edytor sed z definicji wyświetla wszystkie linie na ekranie i powtarza edycje tych linii które zawierają wyselekcjonowany ciąg znaków; w tym przypadku „Preg

 

 

Zadanie 2.


$  sed   -n  ’Preg/p’  dataplik

 

Pregpod         PO                  Krzysztof Wrak          25            .45.              \2\               77

Pregpod         PO                  Zygmunt Malina         25            .45.              \2\               54

 

Wyjaśnienie: użycie w tym przykładzie opcji  -n powoduje, że na ekranie wyświetlają się tylko linie zawierające ciąg znaków  „Preg

 

 

Zadanie 3.


$  sed  ‘4d’  dataplik


Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: Wyświetlone na ekranie zostają wszystkie linie  oprócz  linii czwartej

 

 

Zadanie 4.


$  sed  ’3,$d’  dataplik


Kregkato         KA                  AB Kowalski              23            .98.              \3\               88

Kregkato         KA                  Piotr Pawlak              23            .98.              \3\               88

 

Wyjaśnienie: Wyświetlone zostają tylko dwie pierwsze linie, ponieważ wzór wskazuje, że wymazujemu wszystkie linie od linii trzeciej do końca pliku na co wskazuje wyrażenie regularne  $.

 

 

Zadanie 5.


$  sed  ’$d’  dataplik


Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

 

Wyjaśnienie: Wymazanie ostatniej linii w pliku. Wyrażenie regularne  $ symbolizuje właśnie tą linie, wyświetlane są wszystkie linie oprócz linii wymazanej


 

Zadanie 6.


$  sed  ’/Preg/d’  dataplik


Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: Wszystkie linie zawierające ciąg znaków „Preg” zostały wymazane. Reszta linii jest wyświetlona na ekranie

 

 

Zadanie 7.

 

$  sed  ‘/KA/p’  dataplik


Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: pozostawiamy czytelnikowi

 

 

Zadanie 8.

 

$  sed   -n   ‘/KA/p’  dataplik


Kregkato         KA                  AB Kowalski               23            .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23            .98.              \3\               88

 

Wyjaśnienie: pozostawiamy czytelnikowi

 

 

Zadanie 9.

 

$  sed  ‘2d’  dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: pozostawiamy czytelnikowi

 

 

Zadanie 10.

 

$  sed   ‘5,$d’  dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

 

Wyjaśnienie: pozostawiamy czytelnikowi

 

 

Zadanie 11.

 

$ sed  ‘/KA/d’  dataplik

 

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: pozostawiamy czytelnikowi

 

 

Zadanie 12.

 

$  sed  ‘2,3d’  dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: pozostawiamy czytelnikowi

 

 

Zadanie 13.

 

$  sed  ‘s/KA/KT/’   dataplik

 

Kregkato         KT..................AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: polecenie  s pozwala zamienić jeden ciąg znaków na drugi, w tym wypadku zamieniamy ciąg znaków „KA”  na  „KT”, ponieważ brakuje funkcji  g zmiana dokonuje się tylko w pierwszej linii gdzie występuje  „KA”

 

 

Zadanie 14.

 

$  sed  ‘s/KA/KT/g’ dataplik

 

Kregkato         KT..................AB Kowalski               23              .98.              \3\               88

Kregkato         KT..................Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie : W tym wypadku użyliśmy opcji  g i zmiana została dokonana we wszystkich liniach gdzie występuje ciąg znaków „KA”

 

 

 

Zadanie 15.


$   -n   ‘s/^Cre/Ine/p’   dataplik

 

Inegcent          CE                  Jola Krul                   19            .74               \1\               65

Inegcent          CE                  Mariusz Poll               19            .54.              \1\              25

 

Wyjaśnienie: wyrażenie s/^Cre/Ine/ wskazuje, że poszukujemy linii, które zaczynają się ciągiem znaków „Cre” i chcemy je zastąpić ciągiem znaków „Ine” , opcja  -n wskazuje, że wyświetlone zostają tylko linie wyselekcjonowane z pliku.

 

 

 

Zadanie 16.


$  sed  -n  ‘/^Pre/p’  dataplik

 

Pregpod          PO                  Krzysztof Wrak          25            .45.              \2\               77

Pregpod          PO                  Zygmunt Malina         25            .45.              \2\               54

 

Wyjaśnienie: pozostawiamy czytelnikowi

 

 

 

Zadanie 17.


$  sed  -n  ‘s/Krul/Wrak/gp’   dataplik

 

Cregcent          CE                Jola Wrak                   19            .74               \1\               65

 

Wyjaśnienie: wyrażenie s/Krul/Wrak/ zastępuje w liniach gdzie znajduje się ciąg znaków  „Krul” przez ciąg znaków „Wrak”

 

 

 

Zadanie 18.


$  sed  -n  ‘s/\Pa\)wlak/\1liwoda/p’   dataplik

 

Kregkato          KA               Piotr Paliwoda            23            .98.              \3\               88

 

Wyjaśnienie: wyrażenie regularne użyte w poleceniu wskazuje, że poszukujemy ciągu znaków zaczynający się od  Pa , którego umieszczony jest w tagu 1 i ciąg następujący po nim zostanie zastąpiony przez ciąg znaków oznaczony dalej tagiem \1 czyli „liwoda”

 

 

Zadanie 19.

 

$  sed  -n  ’5,/^Preg/p     dataplik

 

Mregmazu        MA                 Urszula Kropiuk          14            .54.              \5\              85

Pregpod          PO                  Zygmunt Malina         25            .45.              \2\               54

 

Wyjaśnienie: Wyświetlenie linii zacząwszy od linii 5 aż do linii zawierającej ciąg znaków „Preg”

 

 

Zadanie 20.

 

$  sed  -n  ’s#88#11#’     dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              \3\...............11

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\...............11

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: Znak  #  po poleceniu  s  wskazuje, że zamieniamy pierwszą liczbę na drugą

 

 

Zadanie 21.

 

$  sed  -e    ’1,3d’  -e ’/Malina/Gruszka/’     dataplik

 

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Gruszka.......25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                  58              .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: dwukrotne użycie opcji  -e  wskazuje że wykonujemy dwa polecenia, pierwsze polecenie wymazuje wiersze od 1 do 3, drugie natomiast zastępuje ciąg znaków „Malina” przez „Gruszka”

 

 

Zadanie 22.

 

$  sed  -e  ’/^Mregmazu    /a\\Zmiana regul w pakowaniu butelek’     dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Zmiana regul w pakowaniu butelek

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: polecenie  a dorzuca do wiersza znak lub ciąg znaków ;  w tym wypadku po wyszukaniu linii zaczynającej się  (^) od ciągu Mregmazu, dorzucamy napis : „Zmiana reguł w pakowaniu butelek”

 

 

Zadanie 23.

 

$  sed  ’/Mregazmu/i\Nowy Region\          dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Nowy Region

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: pozostawiamy czytelnikowi

 

 

Zadanie 24.

 

$  sed  ’5q’ dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

 

Wyjaśnienie: Po wyświetleniu pięciu linii edytor  sed przestaje działać  (funkcja  q)

 

 

Zadanie 25.

 

$  sed  ’/Wrak/ { s/Wrak/Gorki/;q;  }’ dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Gorki..........25              .45.              \2\               77

 

Wyjaśnienie: Kiedy edytor sed napotka linię z ciągiem znaków „Wrak” to ciąg ten jest zastąpiony przez „Gorki” a edytor sed przestaje działać

 

 

Zadanie 26.

 

$  sed  -e ’/Cregcent/h’     -e   ’$G’  dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Marian Kluska              35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58             .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

Cregcent         CE                   Jola Krul                     19              .74               \1\               65

 

Wyjaśnienie: W tym przykładzie wykonujemy dwa polecenia  (opcja –e), pierwsze polecenie selekcjonuje linie która zawiera ciąg znaków oraz kopiuje linie w której ten ciąg znaków się znajduje do specjalnego bugora, drugie polecenie natomiast, linie z bugora umieszcza na końcu pliku (polecenie  $G)

 


Zadanie 27.

 

$  sed  -e ’/Piotr/h’     -e   ’/Marian/x’  dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              \3\               88

Kregkato         KA                  Piotr Pawlak               23              .98.              \3\               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              \2\               77

Cregcent         CE                  Jola Krul                     19              .74               \1\               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              \5\               85

Pregpod          PO                  Zygmunt Malina           25              .45.              \2\               54

Wregwielko     WK                  Piotr Kluska                 35              .98.              \4\               91

Greggda          GD                   DA  Polak                   58              .69.              \9\               87

Cregcent         CE                   Mariusz Poll                 19              .54.              \1\               25

 

Wyjaśnienie: W tym przykładzie wykonujemy także dwa polecenia  (opcja –e), pierwsze polecenie selekcjonuje linie która zawiera ciąg znaków „Piotr” drugie polecenie natomiast, wyselekcjonowany ciąg znaków Marian zastępuje przez Piotr ; tą funkcje wykonuje polecenie  x.

 

 

Zadanie 28.

 

$  sed  ‘s/\\[0-9]\\/\*[0-9]\*/p’   dataplik

 

Kregkato         KA                  AB Kowalski               23              .98.              *3*               88

Kregkato         KA                  Piotr Pawlak               23              .98.              *3*               88

Pregpod          PO                  Krzysztof Wrak           25              .45.              *2*               77

Cregcent         CE                  Jola Krul                     19              .74               *1*               65

Mregmazu        MA                 Urszula Kropiuk            14              .54.              *5*               85

Pregpod          PO                  Zygmunt Malina           25              .45.              *2*               54

Wregwielko     WK                  Marian Kluska              35              .98.              *4*               91

Greggda          GD                   DA  Polak                   58             .69.              *9*               87

Cregcent         CE                   Mariusz Poll                 19              .54.              *1*               25

 

Wyjaśnienie: pozostawiamy czytelnikowi

 

 

Wyrażenie Regularne Rozdział 8.4 Darmowy kurs Linux