åwiczenia z systemu Unix maj, 2003 Filtry tr transliteruje znaki tr [-opcja] src [dest] Program transformuje tekst wejêciowy przekodowujàc poszczególne znaki i wypisuje rezultat na wyjêciu. W najprostszym przypadku, ka dy znak wyspecyfikowany w parametrze src zostaje zastàpiony odpowiednim znakiem wyspecyfikowanym w parametrze dest; wszystkie inne znaki kopiowane sà bez zmian. Obydwa parametry src i dest mogà zawieraç podciàgi postaci c1-c2 b dàce skrótowà formà zapisu podzbioru znaków z zakresu c1éc2. Obydwa znaki c1 i c2 powinny byç albo cyframi, albo literami z tego samego rejestru. Je eli u yta została opcja -d oraz brakuje parametru dest, to wszystkie znaki reprezentowane przez src zostanà usuni te z tekstu. JeÊli natomiast dest jest krótszy ni src, to wszystkie znaki w src nie majàce swoich odpowiedników oraz znak odpowiadajàcy koƒcowemu elementowi dest zostajà zastàpione tym ostatnim. Gdy u yta jest opcja -s, to spójne sekwencje takich znaków w tekêcie wejêciowym sà zast powane pojedynczym znakiem. Na przykład tr -s 0-9 9 redukuje ka dà seri cyfr do pojedynczej cyfry 9. Wreszcie, jeêli parametr src jest poprzedzony opcjà -c, to za zestaw êródłowy przyjmuje si zbiór wszystkich znaków z wyjàtkiem tych, które wyst pujà w src. Usuni cie znaków interpunkcji i rozdzielenie poszczególnych słów w ka dym wierszu odst pami: tr -c Òa-zA-Z\nÓ Ò Ò åwiczenie 1. Przy pomocy programu tr zamieƒ du e litery na małe. åwiczenie 2. U ywajàc programu tr zaimplementuj szyfr Cezara (aæb, bæc,, zæa). åwiczenie 3. Podziel dokument na słowa i wypisz ka de w oddzielnym wierszu. Przyjmij, e słowo jest to maksymalna sekwencja znaków ró nych od spacji, znaku tabulacji i znaku nowego wiersza. Co si stanie, jeêli tekst zaczyna si od spacji lub tabulatora? wc zlicza znaki na wejêciu wc -c Program zlicza znaki pojawiajàce si na wejêciu i wypisuje wynik w postaci pojedynczego wiersza tekstu na wyjêciu. Poniewa ka dy wiersz jest w reprezentacji wewn trznej zakoƒczony znakiem newline, wi c wynikiem rachunku jest liczba wierszy plus łàczna liczba znaków w wierszach. åwiczenie 4. U yj programów wc (z opcjà -c) i tr do policzenia wierszy na wejêciu.
åwiczenia z systemu Unix 2 åwiczenie 5. Skonstruuj potok z programów tr oraz wc (z opcjà -c), który zlicza słowa pojawiajàce si na wejêciu i wypisuje wynik w postaci wiersza tekstu na wyjêciu. åwiczenie 6. Jak mo emy policzyç ile serii cyfr wyst puje w programie? Sortowanie sort sortuje wiersze tekstu sort [-opcja] Program sortuje tekst wejêciowy w rosnàcym porzàdku leksykograficznym. Dwa wiersze sà w relacji porzàdku, je eli sà identyczne lub jeêli pierwsza od lewej pozycja, na której si ró nià, zawiera znaki b dàce w relacji porzàdku wyznaczonego przez wewn trznà relacj numerycznà znaków. Je eli dany wiersz jest segmentem poczàtkowym (właêciwym) drugiego wiersza, to poprzedza go w tym porzàdku. Opcja -r umo liwia odwrócenie porzàdku sortowania. Po u yciu opcji -n poczàtkowa sekwencja cyfr z opcjonalnym znakiem arytmetycznym b dzie sortowana według porzàdku liczbowego, reszta wiersza natomiast według normalnego porzàdku. Drukowanie posortowanych wyników programu: program sort lpr uniq usuwa przyległe duplikaty wiersza uniq [-opcja] Program wypisuje na wyjêciu tylko pierwszy z grupy sàsiadujàcych, identycznych wierszy na wejêciu. Jest on najbardziej przydatny dla tekstów posortowanych, w których wszystkie identyczne wiersze wyst pujà obok siebie; w takim przypadku przepuszcza on tylko po jednym egzemplarzu ka dego wiersza wejêciowego. Dzi ki opcji -c ka dy wiersz na wyjêciu zostanie poprzedzony liczbà swoich wystàpieƒ w tekêcie wejêciowym. Usuwanie duplikatów wierszy z wyjêcia programu: program sort uniq åwiczenie 7. Skonstruj potok z programów tr, sort oraz uniq, który tworzy posortowanà list słów w dokumencie åwiczenie 8. Skonstruj potok z programów tr, sort oraz uniq (z opcjà -c), który tworzy list cz stoêci wyst powania słów w dokumencie, uporzàdkowanà według malejàcej cz stoêci. Jak zostanà potraktowane puste wiersze na wejêciu? comm porównuje wiersze w dwóch plikach comm [-opcja] plik1 plik2 Program słu y do porównywania wierszy w dwóch posortowanych plikach tekstowych.
åwiczenia z systemu Unix 3 Wypisuje wyniki w trzech kolumnach: w pierwszej wiersze wyst pujàce tylko w pliku1, w drugiej wiersze wyst pujàce tylko w pliku2, i w ostatniej wiersze wyst pujàce w obu plikach jednoczeênie. Program mo e byç wywoływany z parametrami opcjonalnym -1, -2 i -3, wskazujàcymi, e nie nale y wypisywaç kolumny o odpowiednim numerze. Je eli plik1 jest zastàpiony przez znak -, to odnosi si on do wejêcia standardowego. åwiczenie 9. PrzypuÊçmy, e dost pny jest słownik j zyka angielskiego w postaci posortowanego pliku tekstowego zawierajàcego po jednym słowie w wierszu. Posługujàc si programami tr, sort, uniq oraz comm utwórz list słów wyst pujàcych w dokumencie, a nie wyst pujàcych w słowniku. Jest to pierwszy szkic programu wyłapujàcego literówki. Wzorce tekstowe grep wyszukuje wzorzec w tekêcie grep wzorzec Program grep czyta po kolei wiersze tekstu ze swego pliku wejêciowego i wypisuje na swój plik wyjêciowy wiersze zawierajàce fragment, do którego pasuje podany wzorzec. Wzorzec tekstowy jest połàczeniem nast pujàcych elementów: c znak graficzny c. dowolny znak oprócz znaku nowego wiersza ^ poczàtek wiersza $ koniec wiersza (pusty tekst przed znakiem nowego wiersza) [É] klasa znaków (dowolny znak z wymienionych) [^É] dopełnienie klasy znaków (dowolny znak z wyjàtkiem wymienionych) * domkni cie (zero lub wi cej wystàpieƒ poprzedzajàcego wzorca) \c wyró nik (przywrócenie pierwotnego znaczenia, np. \^,\[,\*) Wydrukowanie wierszy koƒczàcych si identyfikatorem lub słowem kluczowym: grep Ò[a-zA-Z][a-zA-Z0-9]*$Ó åwiczenie 10. OkreÊl wzorzec pasujàcy do słów utworzonych z liter, jakie dostrze esz na kieszonkowym kalkulatorze przekr conym do góry nogami (zazwyczaj sà to litery BEhILOS od cyfr 8341705) åwiczenie 11. OkreÊl wzorzec tekstowy, pasujàcy jedynie do słów zawierajàcych samogłoski aeiouy w podanej kolejnoêci, jak abstemiously lub facetiously. åwiczenie 12. OkreÊl wzorce pasujàce do dowolnego identyfikatora j zyka Pascal. W jaki sposób za pomocà programów tr, sort, uniq oraz grep wypiszesz wszystkie mo liwe identyfikatory i słowa kluczowe, wyst pujàce w danym programie? Czy jest łatwa metoda wyeliminowania słów kluczowych? åwiczenie 13. Czy mo na u yç programu grep do usuni cia: wszystkich pustych wierszy z tekstu; wszystkich kart z komentarzami z programu napisanego w Fortranie; wszystkich komentarzy programu pascalowego?
åwiczenia z systemu Unix 4 sed zamienia wzorce w tekêcie sed s/wzorzec/coænowego/g Program sed kopiuje tekst wejêciowy na wyjêcie, zast pujàc wszystkie nie nakładajàce si wystàpienia podanego wzorca tekstem coænowego. Brak parametru coænowego powoduje usuni cie dopasowanego fragmentu. Reguły budowy wzorców sà takie same jak w programie grep. Dodatkowo, w celu póêniejszego wybierania bàdê przestawiania cz Êci dopasowanego fragmentu tekstu, mo na teraz znakowaç segmenty wzorca przy pomocy metaznaków \( i \). Zawarta mi dzy nimi cz Êç dopasowanego fragmentu tekstu zostanie zapami tana do póêniejszego u ycia w tekêcie zast pujàcym coænowego, który zawiera zero lub wi cej nast pujàcych elementów: c znak graficzny c & to, co było dopasowane do wzorca wzorzec \n tekst zapami tany przez n-tà par nawiasów \( i \)(n jest liczbà jednocyfrowà) \c wyró nik (przywrócenie pierwotnego znaczenia, np. \&) Uj cie w nawiasy wszystkich sum i ró nic identyfikatorów: sed Òs/[a-zA-Z][a-zA-Z0-9]* *[+-] *[a-za-z][a-za-z0-9]*/(&)/gó åwiczenie 14. Jaki b dzie efekt wywołania: sed s/active/in&/g Dla tekstów: active, inactive, attractive, radioactive? Co nale y zmieniç, aby zmianie uległo tylko słowo active? åwiczenie 15. Wiersze pewnego pliku składajà si z dwóch pól, oddzielonych znakiem spacji. Utwórz nowy plik, którego wiersze zawierajà te same pola w odwróconej kolejnoêci; na przykład 1234 5678 przechodzi na 5678 1234 Wskazówka: Skorzystaj z mechanizmu znakowania segmentów wzorca tekstowego. åwiczenie 16. W jaki sposób, korzystajàc z mechanizmu znakowania, mo na zarzàdaç zmiany na zero pierwszej od lewej liczby w wierszu zawierajàcym liczby całkowite? Jak pierwszej od prawej? Drugiej od lewej? åwiczenie 17. Załó my, e program grep posiada opcj -n, umo liwiajàcà wydrukowanie numeru wiersza przed ka dym wierszem zawierajàcym fragment pasujàcy do wzorca. Mo e si to przydaç do póêniejszej ich identyfikacji. W jaki sposób przy pomocy programów grep (z opcjà -n), sort i sed mo na odwróciç kolejnoêç wierszy w pliku?
åwiczenia z systemu Unix 5 Redagowanie tekstu ed redaguje pliki tekstowe ed [plik] Funkcje: Program ed jest interakcyjnym edytorem tekstowym, który czyta wiersze z wejêcia i wypisuje odpowiednie informacje na wyjêcie, w zale noêci od dyrektywy. Jego działanie polega na czytaniu na àdanie plików tekstowych do wewn trznego bufora; zawartoêç bufora mo e byç nast pnie wyêwietlana i modyfikowana przy u yciu ró nych dyrektyw, wreszcie na àdanie zapisana w cz Êci lub całoêci na pliki tekstowe. Wyszukiwaƒ i wymian kontekstowych mo na dokonywaç podajàc wzorce tekstowe, zgodnie z regułami przyj tymi dla programu sed. Bufor jest zorganizowany w postaci ciàgu wierszy, numerowanych od 1; wiersze sà automatycznie przenumerowywane w miar przybywania lub ubywania tekstu. Numery wierszy sà budowane z nast pujàcych elementów: n liczba dziesi tna. wiersz bie àcy $ wiersz ostatni Dyrektywy mogà byç poprzedzone jednym lub dwoma numerami wierszy oddzielonymi przecinkiem (oprócz dyrektyw e, f, i q, dla których nie mo na podaç adnego). Gdy adne numery nie sà podane, to sà przyjmowane nast pujàce wartoêci domyêlne: (.) wiersz bie àcy (.,.) wiersz bie àcy u yty dwa razy (1,$) wszystkie wiersze A oto wybrane dyrektywy i ich domyêlne numery wierszy, w porzàdku alfabetycznym: (.,.) d usuƒ tekst e plik redaguj plik, kasujàc poprzednià zawartoêç bufora; zapami taj nazw pliku f plik wydrukuj i zapami taj nazw pliku (.,.) m w3 przenieê tekst za wiersz w3 (.,.) p drukuj tekst q wyjdê z edytora (.) r plik czytaj plik i dołàcz za wierszem (.,.) s/wz/nowy/g zastàp wystàpienie wzorca wz tekstem nowy (g powoduje zastàpienie wszystkich wystàpieƒ w wierszu) (1,$) w plik zapisz tekst do pliku Globalne przedrostki powodujà powtarzanie wykonywania dyrektywy dla ka dego wiersza, który zawiera wystàpienie podanego wzorca : (1,$) g/wzorzec/dyrektywa/ Przed wykonaniem dyrektywy, wierszem bie àcym staj si wiersz, w którym znaleziono dopasowanie. Dyrektywa g/^/m0 znakuje wszystkie wiersze, po czym przesuwa po kolei ka dy wiersz na poczàtek bufora. Daje to efekt odwrócenia kolejnoêci wierszy w pliku. åwiczenie 18. Utworzyç plik dyr, zawierajàcy list dyrektyw edytora ed dokonujàcà globalnej wymiany słowa right na left w wielu plikach. Wskazówka: Utwórz plik recepta, zawierajàcy list dyrektyw, które majà byç wykonane
åwiczenia z systemu Unix 6 dla ka dego pliku: f g/right/s//xxxx/g g/left/s//right/g g/xxxx/s//left/g w Nast pnie, wykonaj program ls, tworzàcy list wszystkich nazw plików, po jednej w wierszu. Tak powtałà list umieêç w pliku dyr i korzystajàc z polecenia s zamieƒ ka dà nazw na dyrektyw e nazwapliku Teraz przy pomocy dyrektywy g wstaw za ka dym wierszem tak utworzonego pliku list dyrektyw z pliku recepta.
åwiczenia z systemu Unix 7 Odpowiedzi åwiczenie 1. tr A-Z a-z åwiczenie 2. tr a-z b-za åwiczenie 3. tr -s " \t\n" "\n" åwiczenie 4. tr -dc "\n" wc -c åwiczenie 5. tr -s " \t\n" "\n" tr -dc "\n" wc -c åwiczenie 6. tr -s 0-9 9 tr -dc 9 wc -c åwiczenie 7. tr A-Z a-z tr -cs a-z "\n" sort uniq åwiczenie 8. tr A-Z a-z tr -cs a-z "\n" sort uniq -c sort -n -r åwiczenie 9. tr A-Z a-z tr -cs a-z "\n" sort uniq comm -23 - s ownik åwiczenie 10. [BEhILOS]* åwiczenie 11. [^aeiouy]*a[^aeiouy]*e[^aeiouy]*i[^aeiouy]*o[^aeiouy]*u[^a eiouy]*y[^aeiouy]* åwiczenie 12. tr -cs a-za-z0-9 "\n" sort uniq grep "[a-za-z][a-za- Z0-9]*" åwiczenie 13. Tak, tak, nie. åwiczenie 14. sed Òs/^active/in&/Ó åwiczenie 15. sed Òs/\([^ ]*\) \(.*\)/\2 \1/Ó åwiczenie 16. sed Òs/^[0-9]*\([^0-9]*\)/0\1/Ó sed Òs/\([^0-9]\)[0-9]*[^0-9]*$/\10/Ó sed Òs/^\([0-9]*[^0-9]\)[0-9]*/\10/Ó åwiczenie 17. grep -n ^ sort -r -n sed Òs/^[0-9]* //Ó åwiczenie 18. 1,$s/^/e / g/./.r recepta