• Nie Znaleziono Wyników

2013-01-08 JarosławPiersa Wstępdosystemówwielozadaniowychlaboratorium19—awk

N/A
N/A
Protected

Academic year: 2021

Share "2013-01-08 JarosławPiersa Wstępdosystemówwielozadaniowychlaboratorium19—awk"

Copied!
25
0
0

Pełen tekst

(1)

Wstęp do systemów wielozadaniowych laboratorium 19 — awk

Jarosław Piersa

Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika

2013-01-08

(2)

Ćwiczenia Zadania domowe

Idea Elementy języka

Idea

Język programowania do pracy z bazami danych (w formie tekstowej)

wiersz w pliku = rekord

słowa w danym wierszu = pola rekordu

awk przegląda każdy wiersz, jeżeli dopasuje go do wzorca, to wykonuje akcję

ogólna składnia:

wzorzec { akcja; }

J. Piersa WSWZ 2012/2013 Laboratorium 19

(3)

Prosty przykład

awk ’//{ print $0; } ’ ścieżka/do/pliku awk -f skrypt ścieżka/do/pliku

(4)

Ćwiczenia Zadania domowe

Idea Elementy języka

Ćwiczenie 1

Napisz polecenie AWK, które wyświetli całą zawartość pliku między liniami piątą a dziesiątą

J. Piersa WSWZ 2012/2013 Laboratorium 19

(5)

Wzorzec

BEGIN— przed pierwszą linią END— po ostatniej linii END— po ostatniej linii

/wyrażenie regularne /— dopasowane wyrażenia NR==10— numer rekordu (wiersza)

! wzorzec— negacja warunku

wzorzec A || wzorzec B— alternatywa warunków wzorzec A && wzorzec B— koniunkcja warunków

(6)

Ćwiczenia Zadania domowe

Idea Elementy języka

Ćwiczenie 2

Napisz polecenie AWK, które wyświetli całą zawartość pliku między liniami piątą, a dziesiątą

J. Piersa WSWZ 2012/2013 Laboratorium 19

(7)

Zmienne

FS— separator pól RS— separator rekordów

OFS ORS— separator rekordów i rekordów w pliku wyjściowym NF— ilość pól w bieżącym rekordzie

NR— numer bieżącego rekordu

$0— cały rekord

$1 $2— pole pierwsze, pole drugie FILENAME— przetwarzany plik

(8)

Ćwiczenia Zadania domowe

Idea Elementy języka

Ćwiczenie 3

wyświetl ile wierszy i rekordów w każdym z wierszy ma plik passwd(ten rozszerzony)

J. Piersa WSWZ 2012/2013 Laboratorium 19

(9)

Zmienne c.d.

{zm = wartość;} — w awk można stosować zmienne (bez deklaracji)

{zm = $1 + $5; print zm;} — operacje na zmiennych w stylu C

(10)

Ćwiczenia Zadania domowe

Idea Elementy języka

Ćwiczenie 4

napisz polecenie, które wyświetli w każdym wierszu sumę pól piątego i szóstego

napisz polecenie, które wyświetli sumę wszystkich pól piątych i sumę pól szóstych w całym pliku

J. Piersa WSWZ 2012/2013 Laboratorium 19

(11)

Instrukcja warunkowa

instrukcja warunkowa (składnia w stylu c):

/[0-9]*/ {

if (zm == 2 && a <= 4 ) { instrukcja1 ;

} else {

instrukcja2 ; } # if

} # akcja

(12)

Ćwiczenia Zadania domowe

Idea Elementy języka

Ćwiczenie 5

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

J. Piersa WSWZ 2012/2013 Laboratorium 19

(13)

Pętla

Pętla for (składnia w stylu c):

/[0-9]*/ {

for (i=2 ; i<8 ; i++ ) { instrukcja1 ;

} # for } # akcja Pętla while:

/[0-9]*/ {

while (a+1 != 10 ) { a++;;

} # while

(14)

Ćwiczenia Zadania domowe

Idea Elementy języka

Ćwiczenie 6

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 zamiast print (łamanie linii poprzez:

printf "napis\nnapis2")

J. Piersa WSWZ 2012/2013 Laboratorium 19

(15)

Funkcje

Funkcje:

function sqr( n ) { return n * n;

}

(16)

Ćwiczenia Zadania domowe

Idea Elementy języka

Tablice

Tablice:

tabl[ indeks ] = 1;

J. Piersa WSWZ 2012/2013 Laboratorium 19

(17)

Ćwiczenie

Napisz skrypt awk, który zliczy ilość liczb w każdym wierszu a następnie wypisze te liczby posortowane

wskazówka: wykorzystaj jako separator pól odpowiednie wyrażenie regularne

(18)

Ćwiczenia Zadania domowe

Idea Elementy języka

Tablice hashowane

tablice mogą być indeksowane napisami:

tabl[ "ala ma kota"] = 1;

iterowanie po tablicach hashowanych for (slowo in tablica ) {

print slowo tablica[slowo]

}

J. Piersa WSWZ 2012/2013 Laboratorium 19

(19)

przeanalizuj skrypt

posortuj kolejność wypisywania BEGIN{ t a b [ ” A l a ” ] = 0 ;

t a b [ ” Ola ” ] = 0 ; }

/ [ aA ] l a /{ t a b [ ” A l a ” ]++; } / [ Oo ] l a /{ t a b [ ” Ola ” ]++; } END{

f o r ( i m i e i n t a b ) {

p r i n t f ( ” i m i e %s w y s t e p u j e %d r a z y ” , i m i e , t a b [ i m i e ] ) ;

} # f o r }

(20)

Ćwiczenia Zadania domowe

Idea Elementy języka

Operacje na napisach

index(string, substring ) length(string )

split (string, tab ) — podział napisu na tablicę według zmiennej FS (może być wyrażenie regularne)

substr(string, start ) — podnapis od pozycji start do końca

substr(string, start, koniec ) — podnapis od pozycji start długości k znaków

J. Piersa WSWZ 2012/2013 Laboratorium 19

(21)

Ćwiczenie

dana niech będzie tablica hashowna: tab["Ala"]="Alice";

tab["ma"]="has"; tab["kota"]="a kitty";

napisz prosty translator, który słowo po słowie zmienia wyrazy polskie na angielskie (o ile ma tłumaczenia w słowniku) jeżeli nie ma tłumaczenia, to pozostawia słowo bez zmian wynik wypisze na stdout

można skorzystać zsub()

(22)

Ćwiczenia

Zadania domowe Zadanie 1

Zadanie domowe 1 — Trójmian kwadratowy

Napisz skrypt w awk, który

zostanie wykonany na pliku, który zawiera po trzy liczby w wierszu (pierwsza niezerowa): a b c

dla każdego wiersza: potraktuje te liczby jako współczynniki trójmianu: ax2+ bx + c

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.

J. Piersa WSWZ 2012/2013 Laboratorium 19

(23)

Zadanie domowe 2 — Oceniacz

z arkusza z wynikami z przedmiotu (na moodle) wyeksportuj arkusz drugi (z punktacją) jako plik csv,

wskazówka: eksportując można wybrać separator pól (zalecany) oraz opcję cytowania napisów (zalecane bez)

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ęć

(24)

Ćwiczenia

Zadania domowe Zadanie 1

Zadanie domowe 3 — Analiza logów

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.

J. Piersa WSWZ 2012/2013 Laboratorium 19

(25)

Ź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

Cytaty

Powiązane dokumenty

Ponadto mo¿liwe jest obliczenie wielkoœci emisji zanieczyszczeñ i gazów cieplarnianych pochodz¹cych z sektora transportu, w zale¿noœci od przyjêtych regulacji prawnych

Przede wszystkim, zarówno dla paliw takich jak wêgiel kamienny, jak i energii elektrycznej funkcjonuje wiele rynków, o ró¿nych strukturach, a zatem i zasadach ustalania cen

Wspieraj¹cy teoriê krañcow¹ twierdz¹, ¿e ceny bazuj¹ jednak na kosztach krañcowych, choæ ich poziom nie jest uœwiadamiany, a decyzje przedsiêbiorców s¹ wyni- kiem ich

Artyku³ prezentuje wyniki an alizy statystycznej i ocenê rynku paliwowo-energe- tycznego w Polsce w odniesieniu do rynku Unii Europejskiej oraz przedstawia stworzone przez

Elektrownie i elektrociep³ownie przemys³owe, których g³ównym celem dzia³alnoœci jest produkcja energii elektrycznej i ciep³a na w³asne potrzeby, powinny zatem staæ siê

Bior¹c pod uwagê powy¿sze przes³anki, celem niniejszego artyku³u jest analiza zmian jakie przeszed³ sektor energetyki przemys³owej w kontekœcie postêpuj¹cej liberalizacji

Prognoza na podstawie danych rocznych wska- za³a na kierunki zmian cen, natomiast prognoza na bazie dziennych cen ropy Brent z dopuszczalnym b³êdem wskaza³a cenê ropy na kolejne

Przyk³adem takich dzia³añ jest Clean Coal Fund w Australii – fundusz wspieraj¹cy rozwój czystych technologii wêglowych CTW (finan- sowanie w wysokoœci 500 mln AUD przeznaczone