Jerzy Nawrocki, Wprowadzenie do informatyki



Podobne dokumenty
System operacyjny Linux

J ezyk AWK Kurs systemu UNIX

Jerzy Nawrocki, Wprowadzenie do informatyki

AWK. Plan wykładu. Wprowadzenie. Najprostszy program

Wstęp do systemów wielozadaniowych laboratorium 19 awk

Matematyczne Podstawy Informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki

Języki i metodyka programowania. Wprowadzenie do języka C

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Wyrażenia regularne. Regular expressions. aka. Regexp

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

2 Przygotował: mgr inż. Maciej Lasota

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

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

1 Podstawy c++ w pigułce.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Microsoft IT Academy kurs programowania

Podstawy Programowania

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Wykład 1

Programowanie w językach wysokiego poziomu

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

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

L E X. Generator analizatorów leksykalnych

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Programowanie deklaratywne

Pliki. Informacje ogólne. Obsługa plików w języku C

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Pytania sprawdzające wiedzę z programowania C++

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Podstawy programowania C. dr. Krystyna Łapin

Podstawy programowania w języku C i C++

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

dr inż. Jarosław Forenc

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

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

Programowanie Proceduralne

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

1 Podstawy c++ w pigułce.

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

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

Wstęp do programowania

Analiza leksykalna i generator LEX

Pobieranie argumentów wiersza polecenia

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

1. Wprowadzanie danych z klawiatury funkcja scanf

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

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Podstawy i języki programowania

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

JĘZYKI PROGRAMOWANIA

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Wskaźniki. Informatyka

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

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

Programowanie obiektowe

Wstęp do programowania 1

Wstęp do programowania

Zmienne, stałe i operatory

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Biblioteka standardowa - operacje wejścia/wyjścia

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Ćwiczenia nr 11. Translatory. Wprowadzenie teoretyczne

1 Wielokrotne powtarzanie tych samych operacji

Wstęp do programowania

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

Plik jest reprezentowany przez strumień znaków (bajtów) o zmiennej długości. Koniec strumienia identyfikowany jest znacznikiem końca pliku EOF.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Podstawy programowania skrót z wykładów:

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

WYKŁAD 1 - KONSPEKT. Program wykładu:

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Instrukcje sterujące. Programowanie Proceduralne 1

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Praktyka Programowania

Podstawy programowania w języku C++

Podstawy programowania. Wprowadzenie

Języki programowania obiektowego Nieobiektowe elementy języka C++

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Zakład Usług Informatycznych OTAGO

PODSTAWY PROGRAMOWANIA STRUKTURALNEGO (C) SYLABUS A. Informacje ogólne

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Pascal - wprowadzenie

Transkrypt:

Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Przetwarzanie tekstów i AWK Problem konwersji plików FName:Jurek SName:Busz Salary 585 FName:Alek SName:Gor Salary 7 FName SName Salary Jurek Busz 585 Alek Gor 7 Przetwarzanie tekstów i AWK (2) Problem konwersji plików Problem konwersji plików #include <stdio.h> #include <stdlib.h> FILE *fin; char token[2]; char gettoken(void) {int i=; char c; do {c = getc(fin); if (c == EOF) return (EOF); } while (c <! ); Rozwiązanie w C: 4 linii kodu Przetwarzanie tekstów i AWK (3) Rozwiązanie w AWK BEGIN {FS=": ";} NR == 1 {print $1, "\t", $3, "\t", $5;} {gsub(/,/, "., $6); print $2, "\t", $4, "\t", $6;} Przetwarzanie tekstów i AWK (4) Powstanie języka Cel wykładu Bell Labs, Murray Hill (New Jersey), Foto: http://en.wikipedia.org/wiki/bell_labs Bell Labs, New Jersey (USA), 1977 AWK: Aho, Weinberger, Kernighan Platformy: Unix, MS DOS/Windows Podobieństwo do C Przetwarzanie tekstów i AWK (5) Przedstawić: Inny paradygmat programowania (programowanie regułowe) Podstawy programowania w języku AWK Przetwarzanie tekstów i AWK (6) Przetwarzanie tekstów i AWK 1

Jerzy Nawrocki, Plan wykładu Idea języka AWK Plik wejściowy Idea języka AWK Najprostsze programy Wzorce wiersza Zmienne Pole Jerzy Nawrocki 4389 I1 Jan Kowalski 4378 I2 Pola: $1, $2, $3,... Wiersz Przetwarzanie tekstów i AWK (7) Przetwarzanie tekstów i AWK (8) Idea języka AWK Schemat programu Zasada działania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2}...... Reguła przetwarzania Jerzy Nawrocki Jan Kowalski Adam Malinowski wzorzec1 {instrukcje1} wzorzec2 {instrukcje2}...... Przetwarzanie tekstów i AWK (9) Przetwarzanie tekstów i AWK (1) Plan wykładu Najprostsze programy Idea języka AWK Najprostsze programy Wzorce wiersza Zmienne Ile pól na wyjściu? Jerzy Nawrocki 4389 I1 Jan Kowalski 4378 I2 $4== I1 { print $2, $1; } Przetwarzanie tekstów i AWK (11) Przetwarzanie tekstów i AWK (12) Przetwarzanie tekstów i AWK 2

Jerzy Nawrocki, Najprostsze programy Najprostsze programy Ile pól na wyjściu? Jerzy Nawrocki 4389 I1 Jan Kowalski 4378 I2 Jakie pole najpierw? Jerzy Nawrocki 4389 I1 Jan Kowalski 4378 I2 $4== I1 { print $2, $1; } Przetwarzanie tekstów i AWK (13) Przetwarzanie tekstów i AWK (14) Plan wykładu Wzorce wiersza Idea języka AWK Najprostsze programy Wzorce wiersza Zmienne Początek i koniec tekstu Relacje Wzorce złożone Wzorce zakresu Przetwarzanie tekstów i AWK (15) Przetwarzanie tekstów i AWK (16) Początek i koniec tekstu Początek i koniec tekstu Jerzy Nawrocki 4389 I1 Jan Kowalski 4378 I2 BEGIN { print ----- ; } $4== I2 { print $2, $1; } END { print ***** ; } Jerzy Nawrocki 4389 I1 Jan Kowalski 4378 I2 END { print ***** ; } $4== I2 { print $2, $1; } BEGIN { print ----- ; } Przetwarzanie tekstów i AWK (17) Przetwarzanie tekstów i AWK (18) Przetwarzanie tekstów i AWK 3

Jerzy Nawrocki, Relacje Wzorce złożone 12 11 2 11 $1 > $2 lub (alternatywa) $1==1 $2==1 && i (koniunkcja) $1==1 && $2==1! nie (zaprzeczenie)! $1==1 Przetwarzanie tekstów i AWK (19) Przetwarzanie tekstów i AWK (2) Wzorce złożone Plan wykładu Jerzy Adam 4389 I1 Adam Kowalski 4378 I2 $4== I1 && $1== Adam { print $2, $1; } Idea języka AWK Najprostsze programy Wzorce wiersza Zmienne Przetwarzanie tekstów i AWK (21) Przetwarzanie tekstów i AWK (22) Stephen Kleene Wyrażenia regularne http://www.math.wisc.edu/~gpslogic/ 199-1-5, Connecticut, USA 1934: Dr, Princeton Univ., (Alonzo Church) 1935: Univ. of Wisconsin- Madison (USA) 1939-4: Inst. for Advanced Study, Princeton teoria rekurencji 199: National Medal of Sci. 1994-1-25, Madison Przetwarzanie tekstów i AWK (23) Wyrażenie arytmetyczne Wartość: Tekst Liczba Wartość(2 3 + 3) = 9 Wyrażenie regularne Wartość: Tekst ZbiórCiągówZnaków Wartość(/Ala Ola/) = {"Ala", "Ola"} Przetwarzanie tekstów i AWK (24) Przetwarzanie tekstów i AWK 4

Jerzy Nawrocki, Wzorce z wyrażeniami regularnymi Np. znak lub ciąg znaków Róża prawdziwa i sztuczna Wzorce z wyrażeniami regularnymi Np. znak lub ciąg znaków Róża prawdziwa i sztuczna $, $1, $2,.. Cały ciąg Ciąg_zn ~ /^ wyr_reg $/ Szydzi z prawdziwej sztuczna: - Krótkie twoje trwanie, Wdzięk pani wkrótce minie A mój pozostanie... - Tak - rzecze wonna róża, Rumieniąc się skromnie Ale patrząc na panią, Myśleć będą o mnie! $, $1, $2,.. Cały ciąg Ciąg_zn ~ /^ wyr_reg $/ Początek Ciąg_zn ~ /^ wyr_reg / Szydzi z prawdziwej sztuczna: - Krótkie twoje trwanie, Wdzięk pani wkrótce minie A mój pozostanie... - Tak - rzecze wonna róża, Rumieniąc się skromnie Ale patrząc na panią, Myśleć będą o mnie! $1 ~ /^A$/ $1 ~ /^A/ Przetwarzanie tekstów i AWK (25) Przetwarzanie tekstów i AWK (26) Wzorce z wyrażeniami regularnymi Np. znak lub ciąg znaków Róża prawdziwa i sztuczna Wzorce z wyrażeniami regularnymi Np. znak lub ciąg znaków Róża prawdziwa i sztuczna $, $1, $2,.. Cały ciąg Ciąg_zn ~ /^ wyr_reg $/ Początek Ciąg_zn ~ /^ wyr_reg / Koniec Ciąg_zn ~ / wyr_reg $/ Szydzi z prawdziwej sztuczna: - Krótkie twoje trwanie, Wdzięk pani wkrótce minie A mój pozostanie... - Tak - rzecze wonna róża, Rumieniąc się skromnie Ale patrząc na panią, Myśleć będą o mnie! $1 ~ /dzi$/ $, $1, $2,.. Cały ciąg Ciąg_zn ~ /^ wyr_reg $/ Początek Ciąg_zn ~ /^ wyr_reg / Koniec Ciąg_zn ~ / wyr_reg $/ Podciąg Ciąg_zn ~ / wyr_reg / Szydzi z prawdziwej sztuczna: - Krótkie twoje trwanie, Wdzięk pani wkrótce minie A mój pozostanie... - Tak - rzecze wonna róża, Rumieniąc się skromnie Ale patrząc na panią, Myśleć będą o mnie! $1 ~ /dzi/ Przetwarzanie tekstów i AWK (27) Przetwarzanie tekstów i AWK (28) Wzorce z wyrażeniami regularnymi Np. znak lub ciąg znaków Róża prawdziwa i sztuczna Znaki specjalne Koniec Podciąg $, $1, $2,.. Cały ciąg Ciąg_zn ~ /^ wyr_reg $/ Początek Ciąg_zn ~ /^ wyr_reg / Ciąg_zn ~ / wyr_reg $/ Ciąg_zn ~ / wyr_reg / $ ~ / wyr_reg / = / wyr_reg / Szydzi z prawdziwej sztuczna: - Krótkie twoje trwanie, Wdzięk pani wkrótce minie A mój pozostanie... - Tak - rzecze wonna róża, Rumieniąc się skromnie Ale patrząc na panią, Myśleć będą o mnie! /dzi/ Przetwarzanie tekstów i AWK (29). dowolny znak [ ] zbiór znaków \n nowa linia \. kropka \ znak cudzysłowu \ddd znak o kodzie oktalnym ddd Przetwarzanie tekstów i AWK (3) Przetwarzanie tekstów i AWK 5

Jerzy Nawrocki, Znaki specjalne Dopełnienie zbioru znaków Co robi ten program? /^.$/ /[123456789]/ Co za różnica? [^... ] /[^-9]/ /[-9]/ /^[-9]/ Przetwarzanie tekstów i AWK (31) Przetwarzanie tekstów i AWK (32) Alternatywa (lub) Nawiasy i alternatywa Co robi ten program? wyr_reg wyr_reg Ząbki listka Nic tak nie potrafi gryźć Jak cudzy laurowy liść. /fi ki/ Nawiasy podnoszą priorytet operatorów: 3*(4 + 5) = 3* 9 = 27 Rozdzielność mnożenia względem dodawania: 3*(4 + 5) = 3*4 + 3*5 = 12 + 15 = 27 (4 + 5)*3 = 4*3 + 5*3 = 12 +15 = 27 Rozdzielność konkatenacji względem alternatywy /(f k)i/ = /fi ki/ /Adam(e i)k/ = /Adamek Adamik/ Przetwarzanie tekstów i AWK (33) Przetwarzanie tekstów i AWK (34) 1 2 3 Rok 1984 1 2 3 Po3maj Rok 1984 2 raki $1 ~ /[-9]/ $1 ~ /[-9]/ 1 2 3 Przetwarzanie tekstów i AWK (35) Przetwarzanie tekstów i AWK (36) Przetwarzanie tekstów i AWK 6

Jerzy Nawrocki, 1 2 3 Po3maj Po3maj Rok 1984 2 raki 32 raki 1 2 3 Po3maj Po3maj 1- lub 2-cyfrową. Rok 1984 2 raki 32 raki $1 ~ /^ [-9] $/ $1 ~ /^( [-9] [-9][-9] )$/ 1 cyfra 2 cyfry 1 2 3 2 raki Przetwarzanie tekstów i AWK (37) Przetwarzanie tekstów i AWK (38) 1 2 3 Po3maj Po3maj 1- Po3maj lub 2-cyfrową. Rok 1984 2 raki 32 raki 32 raki 12 zl 1 2 3 Po3maj Po3maj Po3maj Rok 1984 2 raki 32 raki 32 raki 12 zl $1 ~ /^( [-9] [-9][-9] )$/ $1 ~ /^( [-9] [-9][-9] [-9][-9][-9] )$/ 1 cyfra 2 cyfry 3 cyfry 1 2 3 2 raki 32 raki 32 raki Brak 12 zł! Przetwarzanie tekstów i AWK (39) Przetwarzanie tekstów i AWK (4) [-9] = [-9] 1 [-9][-9] = [-9] 2 [-9][-9][-9] = [-9] 3.................. [-9] 1 [-9] 2 [-9] 3... = [-9]+ $1 ~ /^ [-9]+ $/ 1 2 3 Po3maj Po3maj Po3maj Rok 1984 2 raki 32 raki 32 raki 12 zl 1 2 3 2 raki 32 raki 32 raki 12 zl Przetwarzanie tekstów i AWK (41) Przetwarzanie tekstów i AWK (42) Przetwarzanie tekstów i AWK 7

Jerzy Nawrocki, Może wystąpić sekwencja w. Ciąg pusty w+ = w ww www... w* = w ww www... x = x x = x w+ = w w* = w* w x w* = x x w+ w*x = x w+x * Musi przynajmniej raz wystąpić w. w( w ww www.. )= w ww www wwww.. Przetwarzanie tekstów i AWK (43) Co robi ten program? Nadgodziny 21/2 ================ Nawrocki 6 Complak 359 $2 ~ /^[-9]+$/ Zagadka Przetwarzanie tekstów i AWK (44) Plan wykładu Zmienne Idea języka AWK Najprostsze programy Wzorce wiersza Zmienne Zmienne wprowadzone przez programistę (typ: ciąg znaków; wartość początkowa: ciąg pusty / zero) Zmienne wbudowane (mają standardowe znaczenie) Zmienne polowe $1, $(i+j-1),.. Przetwarzanie tekstów i AWK (45) Przetwarzanie tekstów i AWK (46) Przykładowe zmienne wbudowane NF - liczba pól w wierszu NR - numer wiersza FILENAME - nazwa pliku NR NF total 1 2 2 Reguly sitwy ------------ Zero do zera A bedzie kariera. Zmienne {total= total + NF;} END {print "Pol: ", total; print "Wierszy: ", NR;} Przetwarzanie tekstów i AWK (47) Przetwarzanie tekstów i AWK (48) Przetwarzanie tekstów i AWK 8

Jerzy Nawrocki, Cel wykładu Podsumowanie Przedstawić: Inny paradygmat programowania (programowanie regułowe) Przetwarzanie tekstów i AWK (49) Przetwarzanie tekstów i AWK (5) Idea języka AWK Plik wejściowy Idea języka AWK Schemat programu Pole Jerzy Nawrocki 4389 I1 Jan Kowalski 4378 I2 Wiersz wzorzec1 {instrukcje1} wzorzec2 {instrukcje2}...... Reguła przetwarzania Pola: $1, $2, $3,... Przetwarzanie tekstów i AWK (51) Przetwarzanie tekstów i AWK (52) Zasada działania Cel wykładu Jerzy Nawrocki Jan Kowalski Adam Malinowski wzorzec1 {instrukcje1} wzorzec2 {instrukcje2}...... Przedstawić: Inny paradygmat programowania (programowanie regułowe) Przetwarzanie tekstów i AWK (53) Przetwarzanie tekstów i AWK (54) Przetwarzanie tekstów i AWK 9

Jerzy Nawrocki, Wyrażenia regularne Wyrażenia regularne Wyrażenie arytmetyczne Wartość: Tekst Liczba Wartość(2 3 + 3) = 9 Wyrażenie regularne Wartość: Tekst ZbiórCiągówZnaków Wartość(/Ala Ola/) = {"Ala", "Ola"} Przetwarzanie tekstów i AWK (55) ε x = x ε L 1 L 2 = {xy: x L 1 y L 2 } L (r) = { ε } L n+1 (r) = L(r) L n+1 (r) L n (r) = {xx x: x L(r) } n L(r*) = U L n (r) L(r*) = {ε,x, xx, x n : x L(r) (1)* = {ε, 1, 11, 111, } Przetwarzanie tekstów i AWK (56) Cel wykładu Podsumowanie Przedstawić: Inny paradygmat programowania (programowanie regułowe) Podstawy programowania w języku AWK Przetwarzanie tekstów i AWK (57) Wreszcie! gawk -f prog.awk <in.txt >out.txt Inne mechanizmy AWK: Instrukcje złożone (if, while,..) Tablice dynamiczne Funkcje wbudowane (gsub,..) Przetwarzanie tekstów i AWK (58) Literatura A. Aho, B. Kernighan, P. Weinberger, The AWK Programming Language, Addison- Wesley, Reading, 1988. J. Nawrocki, W. Complak, Wprowadzenie do przetwarzania tekstów w języku AWK, Pro Dialog 2 (1994), 23-46. Przetwarzanie tekstów i AWK (59) Dziękuję za uwagę! Przetwarzanie tekstów i AWK (6) Przetwarzanie tekstów i AWK 1