System operacyjny Linux

Podobne dokumenty
J ezyk AWK Kurs systemu UNIX

System operacyjny Linux

Wstęp do systemów wielozadaniowych laboratorium 19 awk

AWK. Plan wykładu. Wprowadzenie. Najprostszy program

Wyrażenia regularne. Wyrażenia regularne 1/41

Systemy operacyjne. Laboratorium 5. Awk podstawy. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

skrypt powłoki to plik tekstowy, rozpoczynający się sekwencją: pierwsza linia określa powłokę, w której wykonywany jest skrypt; druga to komentarz

J.NAWROCKI, M. ANTCZAK, W. FROHMBERG, K. KOLANOWSKI, J. POCHMARA, S. WĄSIK, T. ŻOK AWK - WPROWADZENIE

Jerzy Nawrocki, Wprowadzenie do informatyki

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

$ awk f plik_z_programem plik_wejsciowy1 plik_wejsciowy2...

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Bloki anonimowe w PL/SQL

Podstawy Programowania Podstawowa składnia języka C++

Operatory zmiany sposobu przypisania standardowych strumieni >,<,>> Jeżeli pierwsze polecenie powiodło się to wykona drugie

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Podstawy Programowania C++

Przekierowanie wejścia wyjścia:

Systemy operacyjne 12

LibreOffice Calc VBA

Środowisko programisty Zestaw 7

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

- wszystkie elementy - wszystkie elementy

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

1 Przygotował: mgr inż. Maciej Lasota

Język Python. Język Python 1/35

1. Indeksy/indeksowanie : Do elementów wektora, list, macierzy czy ramek, można się odwołać na kilka sposobów.

Języki programowania wysokiego poziomu. PHP cz.2.

Instrukcje. Operatory. Operatory. Instrukcje sterujące. wyrażenie1 && wyrażenie2 ;

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Programowanie komputerowe. Zajęcia 3

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Systemy operacyjne 11

Cw.12 JAVAScript w dokumentach HTML

Systemy operacyjne. Laboratorium 7. Perl podstawy. Jarosław Rudy Politechnika Wrocławska 27 kwietnia 2017

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

lekcja 8a Gry komputerowe MasterMind

Języki skryptowe w programie Plans

Wstęp do programowania

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Wstęp do Programowania, laboratorium 02

Dokonaj analizy poniŝszego kodu i na jego podstawie wyświetl w oknie przeglądarki swoje Imię oraz Nazwisko przy uŝyciu instrukcji echo i print

Programowanie skryptów powłoki

1 Podstawy c++ w pigułce.

Redis, skrypty w języku Lua

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

L E X. Generator analizatorów leksykalnych

Opis języka AWK. Tomasz Przechlewski. 18 listopada 2000 roku

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

JAVAScript w dokumentach HTML - przypomnienie

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

PODSTAWY INFORMATYKI

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Zapis algorytmów: schematy blokowe i pseudokod 1

Programowanie obiektowe

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Podstawy Kompilatorów

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

Programowanie w Scilab

Microsoft IT Academy kurs programowania

Administracja i programowanie pod Microsoft SQL Server 2000

Oracle PL/SQL. Paweł Rajba.

Wstęp do programowania

Funkcje wbudowane PHP

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr

Bash - instrukcje warunkowe, pętle i funkcje

do MATLABa programowanie WYKŁAD Piotr Ciskowski

do instrukcja while(wyrażenie);

GNU Octave (w skrócie Octave) to rozbudowany program do analizy numerycznej.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Skrypty powłoki w systemie Linux

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Sieci komputerowe. Wstęp do systemu Linux/UNIX, część II. Ewa Burnecka / Janusz Szwabiński. /

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

SED - Stream EDitor. edytor strumieniowy. Bogumił Konopka W-11/I-21 Politechnika Wrocławska

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawowe części projektu w Javie

1 Podstawy c++ w pigułce.

Interpreter poleceń oraz zmienne środowiskowe

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Pakiety Matematyczne - R Zestaw 2.

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

SSK - Techniki Internetowe

Transkrypt:

Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/

Zawartość modułu 7 Język awk Wprowadzenie Schemat programu Konstrukcja wzorców Konstrukcja wyrażeń regularnych Struktury kontrolne Predefiniowane zmienne Predefiniowane funkcje Tworzenie własnych funkcji - 1 -

Wprowadzenie Autorzy Aho Kernighan Weinberger Myślenie w AWK plik dzielimy na wiersze wiersze dzielimy na pola domyślnie: wiersze są oddzielone końcami wierszy pola są oddzielone białymi znakami - 2 -

Schemat programu wzorzec1 { akcja1 } wzorzec2 { akcja2 }... wzorzecn { akcjan } - 3 -

Konstrukcja wzorców Konstrukcja wzorców BEGIN blok tego wzorca będzie wykonywany przed rozpoczęciem przetwarzania pliku, END blok tego wzorca będzie wykonywany po zakończeniu przetwarzania pliku /wyrażenie regularne/, np. /a.*a/ wyrażenie relacyjne, np. $1<3 wzorzec && wzorzec wzorzec wzorzec - 4 -

Konstrukcja wzorców Konstrukcja wzorców c.d. wzorzec? wzorzec1 : wzorzec2 (wzorzec) zgrupowanie,! wzorzec zaprzeczenie, operator NOT, czyli wiersz nie może się dopasować do wzorzec, wzorzec1, wzorzec2 zakres tzn. po dopasowaniu się pewnego wiersza do wzorzec1 przetwarzane będą wszystkie kolejne wiersze bezwarunkowo, do momentu, aż których z tych wierszy nie dopasuje się do wzorzec2. - 5 -

Konstrukcja wyrażeń regularnych Dopasowanie do c; \c znaku zwykłego; specjalnego,. dowolnego znaku, w tym znaku końca wiersza, ˆ początku wiersza, $ końca wiersza, [abc...] dowolnego znaku z listy, [ˆabc...] dowolnego znaku nie będącego na liście, - 6 -

Konstrukcja wyrażeń regularnych Dopasowanie do: r1 r2 r1 lub r2, r1r2 r1 i potem r2 (złożenie), r+ jednego lub więcej powtórzeń r, r* zero lub więcej powtórzeń r, r? zero lub jednego powtórzenia r, (r) do r (zgrupowanie), r{n}; r{n,}; r{n,m} do powtórzenia r: dokładnie n razy; co najmniej n razy: od n do m razy. - 7 -

Struktury kontrolne if (warunek) instrukcje [ else instrukcje ] while (warunek) instrukcje do instrukcje while (warunek) for (expr1; expr2; expr3) instrukcje for (zmienna in tablica) instrukcje pętla for do iteracji tablic, przykładowo, for (z in T) { obsługa T[z] } - 8 -

Struktury kontrolne break przerwanie wykonania pętli, continue przerwanie wykonania iteracji petli, delete tablica[indeks] usunięcie elementu tablicy o numerze indeks, delete tablica usunięcie tablicy, exit [ wyrażenie ] wyjście z kodem równym wyrażeniu, { instrukcje } blok instrukcji. - 9 -

Predefiniowane zmienne $0 cały przetwarzany wiersz $1, $2,... - kolejne pola przetwarzanego wiersza NR liczba przetworzonych rekordów (wierszy), FNR liczba przetworzonych rekordów w bieżącym pliku FILENAME nazwa aktualnie przetwarzanego pliku, - 10 -

Predefiniowane zmienne FS separator pól w pliku wejściowym, OFS separator pól w pliku wyjściowym, RS separator rekordów w pliku wejściowym, ORS separator rekordów w pliku wyjściowym, NF liczba pól w bieżącym rekordzie, ARGC ilość argumentów skryptu, ARGV tablica argumentów skryptu. - 11 -

Obsługa wejścia/wyjścia next wstrzymuje przetwarzanie bieżącego i przechodzi do następnego rekordu, nextfile wstrzymuje przetwarzanie bieżącego i przechodzi do następnego pliku, print, print lista-wyrazen drukuje cały wiersz lub drukuje argumenty, np. print $1 $2, printf format, lista-wyrazeń drukuje listę wyrażeń wg ustalonego formatu; instrukcja bardzo podobna do tej z bash-a. - 12 -

Funkcje matematyczne sin(expr), cos(expr), tan(expr) log(expr), sqrt(expr) logarytm naturalny, pierwiastek kwadratowy, int(expr) część całkowita z argumentu, rand() funkcja zwraca liczbę z przedziału [0; 1), srand([expr]) działa jak funkcja rand(), przy czym można przekazać ziarno dla generatora liczb losowych jeśli tego nie zrobimy, to wykorzystywany jest bieżący czas dnia. - 13 -

Funkcje do obsługi napisów gensub(r, s, h [, t]) funkcja charakteryzująca się następującymi własnościami: zwraca napis, przy czym argument t pozostaje niezmieniony, szuka wyrażenie regularnego r w t wymieniając znalezione na s, argument h określa, które wystąpienie ma być wymienione; jeśli podamy g lub G, to zostaną wymienione wszystkie wystąpienia jeśli nie podamy t, to wykorzystywane jest $0, czyli cały wiersz, - 14 -

Funkcje do obsługi napisów gsub(r, s [, t]) działa podobnie do funkcji gensub() przy czym zwraca ilość zamian, a zamiany dokonywane są w t (funkcja modyfikuje t), sub(r, s [, t]) działa podobnie do funkcji gsub() przy czym wymienia tylko pierwsze wystąpienie, index(s, t) zwraca miejsce wystąpienia t w s lub 0, jeśli nie występuje (znaki napisów numerujemy od 1), - 15 -

Funkcje do obsługi napisów length([s]) zwraca długość s lub długość $0, jeśli s nie podamy split(s, a [, r]) rozbija s względem r (jeśli nie podamy, to względem FS) i tworzy z tych kawałków tablice a, substr(s, i [, n]) zwraca s od pozycji i; zwraca co najwyżej n znaków, jeśli pominiemy n zwracany jest s do końca, tolower(str), toupper(str) zwracana jest kopia str z wymienionymi literami na małe (wielkie). - 16 -

Tworzenie funkcji Składnia function name(lista-parametrów) { instrukcje } Przykład function f(p, q, a, b) # a i b są lokalne {... } {... ; f(1, 2) ;... } - 17 -

Pierwszy skrypt Tworzymy plik z rozszerzeniem.awk Plikowi nadajemy prawa do wykonywania. W pierwszym wierszu skryptu wpisujemy #!/usr/bin/awk -f. Najpierw umieczamy deklaracje funkcji, a potem wzorce z odpowiednimi akcjami. - 18 -

Przykłady Przykład 1 #!/usr/bin/awk -f function silnia(n) { if ((n==0) (n==1)) return 1; else return n*silnia(n-1); } { print silnia($0) } roadrunner:~ # echo 5./silnia.awk roadrunner:~ # echo -e "2\n5"./silnia.awk Przykład 2 roadrunner:~ # cat dane.txt awk \ '/^a.*/ { print $0 } /^an.*/ { print $0 }' - 19 -

Przykłady Przykład 3 roadrunner:~ # ls -l awk BEGIN { s=0 } /^-/ { s+=$5 } END { print s } Przykład 4 roadrunner:~ # cat liczby.txt awk { s=0; for (i=1;i<=nf;i++) { s+=$i }; print s; } Przykład 5 roadrunner:~ # echo "ala ma kota i ma psa" awk { print gensub("ma", "nie ma", "g", $0) } ala nie ma kota i nie ma psa - 20 -

Przykłady Przykład 6 roadrunner:~ # echo "ala ma kota" awk { split($0,a); print a[2] } ma Przykład 7 roadrunner:~ # awk!/.*a.*/ && /.*M.*/ { print $1 " " $2 " " $3; } dane.txt 2 Magda 120-21 -