WSWZ — Laboratorium – awk
Jarosław Piersa 2013-12-05
Zadanie 1
Napisz polecenie AWK, które wyświetli całą zawartość pliku między liniami piątą a dziesiątą
Zadanie 2
Wyświetl ile wierszy i rekordów w każdym z wierszy ma plikpasswd(ten rozszerzony)
Zadanie 3
• napisz polecenie, które wyświetli w każdym wierszu sumę pól piątego i szóstego
• (BEGIN / END) napisz polecenie, które wyświetli sumę wszystkich pól piątych i sumę pól szóstych w całym pliku
• (if) napisz polecenie, które obliczy w ilu wierszach suma pól piątego, szóstego i siódmego jest większa niż 22, a w ilu mniejsza
Zadanie 4
• (for) napisz polecenie, które wczyta z pliku liczbę n ≥ 2, a następnie narysuje na wyjściu trójkąt prostokątny o wysokości i podstawie równej n.
• np: n = 4:
*
**
* *
****
• wskazówka: użyj printf (jak w C) zamiast print (łamanie linii poprzez: printf "napis\nnapis2")
Zadanie 5
• Napisz skrypt awk, który zliczy ilość liczb w każdym wierszu
• (tablice) a następnie wypisze te liczby posortowane
• wskazówka: wykorzystaj jako separator pól odpowiednie wyrażenie regularne
Zadanie 6
• (tablice hashowane) Napisz skrypt który czyta cały plik i zlicza wystąpienia poszczególnych słów
• na koniec wyświetla znaleziona słowa wraz z krotnością wystąpienia
• wynikowa lista jest posortowana względem liczby wystąpień
1
Zadanie domowe nr 1
Napisz skrypt w awk, który
• zostanie wykonany na pliku, który zawiera po trzy liczby w wierszu: a b c
• dla każdego wiersza: potraktuje te liczby jako współczynniki trójmianu: ax2+ bx + c
• jeżeli a = 0, to jest to rówanie liniowe a nie trójmian kwadratowy i skrypt powinien taką sytuację zabezpieczyć
• obliczy i wypisze pierwiastki rzeczywiste (jeśli są dwa), pierwiastek (jeśli jeden), lub informację o ich braku
• na koniec podsumuje, ile trójmianów miało po dwa, jeden lub brak pierwiastków rzeczywistych
• wskazówka: pierwiastek kwadratowy: sqrt()
• punktacja: 1p.
Zadanie domowe nr 2
Napisz skrypt w awk, który
• z arkusza z wynikami z przedmiotu (na moodle) wyeksportuj arkusz drugi (z punktacją) jako plik csv,
• eksportując można wybrać separator pól (zalecany) oraz opcję cytowania napisów (zalecane bez)
• jeżeli locale jest ustawione na PL pl to domyślnym separatorem dziesiętnym będzie przecinek — niezrozumiały dla awka, taki plik należy uprzednio przetworzyć (np sedem albo awkiem), albo na czas eksportu zmienić locale na EN GB
• napisz skrypt, który automatycznie przeanalizuje arkusz, wystawi oceny i wypisze wyniki np:
Pan/i Nazwisko Imię Punktacja Ocena
• oraz na koniec podsumuje ile jest poszczególnych ocen: np wystawionych ocen NDST: 0 (mam nadzieję — JP)
• można pominąć osoby, które są skreślone z zajęć
• punktacja: 1p.
Zadanie domowe nr 3
Napisz skrypt w awk, który
• napisz skrypt, który przeanalizuje plik z logami aktywności uczestników kursu na moodle
• skrypt dla każdego uczestnika obliczyć jego całkowitą aktywność w kursie, a następnie wypisać podsumowanie: Pan/i Nazwisko Imię aktywność, posortowane malejąco (wg aktywności)
• UWAGA: z logów wycięte są adresy IP i godziny
• punktacja: 1p.
Źródła
• http://www.gnu.org/software/gawk/
• http://www.sunsite.ualberta.ca/Documentation/Gnu/
• można szukać również pod nazwami nawk lub gawk
2