Przedmiot: Architektura komputerów i systemy operacyjne Kierunek studiów: Elektronika i Telekomunikacja Data: Ćwiczenie nr 3 – Procesor tekstu AWK. Cel zajęć: Poznanie możliwości i nauka postaw posługiwania się AWK jako narzędziem do szybkiego wydobywania informacji zawartej w plikach tekstowych i do modyfikacji tych plików. wywołania: awk ' warunek { akcja } ' plik_z_danymi awk -f plik_z_poleceniami_awk plik_z_danymi gdy jest więcej poleceń awk niż jedna para warunek-akcja awk -f plik_z_poleceniami_awk plik_z_danymi > plik_wynikowy gdy rezultaty awk chcemy przekierowac ze stand. wyjścia (terminala) do pliku zasada: Dla każdego wiersza pliku_z_danymi Dla każdej pary warunek-akcja w programie awk Jeżeli "warunek" jest spełniony, to wykonaj "akcja" Zmienne wbudowane (niektóre): $1, $2, $3..... kolejne pola w bieżącym wierszu pliku danych $0 całość bieżącego wiersza NF liczba pól w bieżącym wierszu NR liczba dotychczas przeanalizowanych wierszy FS separator pól, domyślnie spacja warunki: wyrażenia logiczne $3 < $1*S2 $4=="Michalina" $6<$3+$2 wyrażenia regularne /djabel/ - czy ciag znaków "djabel" występuje w wierszu $2~/djabel/ czy ciąg znaków "djabel" występuje w 2-gim polu wiersza kombinacje logiczne dowolnych warunków: && - koniunkcja (i) || - alternatywa (lub) ! - negacja, nawiasy słowo BEGIN specjalny warunek, który ma być spełniony "przed" wszystkimi wierszami z pliku danych, akcja opatrzona takim warunkiem jest wykonywana dokładnie raz, na początku programu. słowo END specjalny warunek, który ma być spełniony "po" wszystkimi wierszami z pliku danych, akcja opatrzona takim warunkiem jest wykonywana dokładnie raz, na końcu programu. dwa warunki rozdzielone przecinkami akcja jest wykonywana od wiersza, który spełnia pierwszy warunek, do wiersza, który spełnia drugi warunek warunek pusty zawsze prawdziwy, akcja wykonywana jest dla wszystkich wierszy Ćwiczenie 1. Napisz polecenie AWK numerujące wiersze podanego pliku i tworzące plik wynikowy z ponumerowanymi wierszami. 2. Napisz polecenie AWK zliczające, ile razy dane słowo wystąpiło w danym pliku. 3. Z podanego przez prowadzącego pliku „zarobki”, wydobądź przy pomocy AWK informacje: - listę zarobków wszystkich osób (plik podaję stawki godzinowe i ilość przepracowanych godzin) - listę osób, których zarobki przekraczają 3000 zł. - listę osób, które przepracowały mniej niż 20 godzin w miesiącu - informację, ile zarabiają wszystkie osoby o imieniu Jan 1. Programem AWK stwórz nową listę płac, która pominie osoby o nazwisku Kowalski i imieniu Zofia. Zadanie nadobowiązkowe (domowe, na ocenę): Z podanych dwóch plików: „studenci” (nazwisko, nr indeksu) i „egzamin” (nr indeksu, ocena), przy pomocy AWK wydobądź nazwiska osób, które zdały egzamin Sprawozdanie winno zawierać listingi zawartości poleceń i programów AWK z krótkim objaśnieniem słownym, ewent. dyskusję niepowodzeń i trudności Przedmiot: Architektura komputerów i systemy operacyjne Kierunek studiów: Elektronika i Telekomunikacja Data: Ćwiczenie nr 2 – Tworzenie skryptów w powłoce systemu Linux – zaawansowane struktury programistyczne. Cel zajęć: Przećwiczenie możliwości programistycznych zawartych w języku skryptowym systemów rodziny Unix Zmienne środowiskowe Środowisko programu składa się ze zmiennych i ich wartości. Jest ono przekazywane do wszystkich programów uruchamianych przez ten program (program potomny dziedziczy środowisko). Przykłady: PATH – lista katalogów, w których system szuka programów i skryptów wykonywalnych HOME – katalog domowy użytkownika Tworzenie zmiennej środowiskowej: MOJ_KATALOG=/usr/home/bolek export MÓJ_KATALOG lub krócej export MOJ_KATALOG=/usr/home/bolek Argumenty skryptu Argumenty wywołania skryptu: skrypt arg1 arg2 arg3 ... $1, $2, ..., $9 to zmienne, których wartości to pierwsze 9 argumentów wywołania $0 to nazwa samego skryptu $# to liczba argumentów skryptu $@ to wszystkie argumenty skryptu argumenty wywołania powyżej 9-tego możemy odczytywać za pomocą polecenia shift. Funkcja warunkowa if if [ warunek1 ] ; then instrukcje1 elif [ warunek2 ] ; then instrukcje2 .... .... else instrukcje_else fi Warunki logiczne funkcji if == jest równy -lt jest mniejszy -gt jest większy -ne jest różny Pętle while warunek; do instrukcje done Instrukcja wyboru case wyrażenie in wzorzec1) instrukcje1 ;; wzorzec2) instrukcje2 ;; .... esac Potoki polecenie1 | polecenie2 | polecenie3 wyniki działania polecenia 1 są argumentami dla polecenia2, którego wyniki są z kolei argumentami dla polecenia 3 Ćwiczenie 1. Napisać skrypt wypisujący swoje argumenty wywołania w odwrotnej kolejności 2. Stworzyć procedurę w bash obliczającą wartość silnia (n!) podanej liczby 3. Napisać skrypt podający słowną reprezentację podanej liczby z zakresu 1..99 Sprawozdanie winno zawierać listingi zawartości skryptów z krótkim objaśnieniem słownym. Pomoce: niniejsza instrukcja, materiały z wykładów, wskazówki prowadzącego i jego konsultacje. Pomoce: niniejsza instrukcja, materiały z wykładów, wskazówki prowadzącego i jego konsultacje.