Wyrażenia regularne i język AWK Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne.

Slides:



Advertisements
Podobne prezentacje
Programowanie wizualne PW – LAB6 Wojciech Pieprzyca.
Advertisements

Programowanie w języku Visual Basic
Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
PROGRAMOWANIE STRUKTURALNE
Informatyka Stosowana
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Przetwarzanie tekstów i AWK Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Procesy współbieżne Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Przetwarzanie tekstów i AWK Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Bazy danych Wprowadzenie do informatyki Wykład 9
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Przetwarzanie tekstów i AWK Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 7
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Przetwarzanie tekstów i AWK
Programowanie imperatywne i język C
Języki formalne i gramatyki
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Przetwarzanie tekstów i AWK Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 5
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Przetwarzanie tekstów i AWK Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 7
Metody formalne Copyright, 2005 © Jerzy R. Nawrocki Analiza systemów informatycznych.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Wyrażenia regularne i język AWK
Komunikacja poprzez Internet
Dokumenty i prezentacje Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do.
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
Tablice.
Język ANSI C Operacje we/wy
Wykład 2 struktura programu elementy języka typy zmienne
Wprowadzenie do programowania w języku Turbo Pascal
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
O relacjach i algorytmach
Programowanie obiektowe III rok EiT
Podstawy programowania w języku C i C++
Przetwarzanie tekstu i strony WWW Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
TABLICE C++.
Wyrażenia w Turbo Pascalu.
Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ Podstawy Programowania Złożona składnia języka C++
Algorytmy i struktury danych
Definicja pliku tekstowego Operacje wykonywane na plikach tekstowych
Informatyka I - Wykład ANSI C
Podstawy programowania
Technologie internetowe II
Jerzy Kotowski Politechnika Wrocławska
Translatory Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11.
Gramatyki i translatory
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Wykład 10 typ zbiorowy rekurencja.
Podstawy języka Instrukcje - wprowadzenie
Przetwarzanie tekstów i AWK Copyright, 2007 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 5
Języki formalne i gramatyki Copyright, 2005 © Jerzy R. Nawrocki Teoretyczne podstawy.
Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Wprowadzenie do teoretycznych podstaw informatyki Copyright, 2004 © Jerzy R. Nawrocki
Procesy współbieżne Copyright, 2006 © Jerzy R. Nawrocki Wstęp do informatyki Wykład.
Asembler i koncepcja von Neumanna Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki Wykład 5
Tablice Zajęcia 8. Definicja Tablica (z ang. array) jest zmienną złożoną, która składa się z ciągu elementów tego samego typu. W pamięci komputera tablica.
Wprowadzenie do programowania w Pascalu mgr inż. Agata Pacek.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Przetwarzanie tekstów i AWK
Dane, zmienne, instrukcje
Zapis prezentacji:

Wyrażenia regularne i język AWK Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki Wykład 4

J.Nawrocki, Wyrażenia regularne i AWK Ulepszenia Dodać automaty skończone (deterministyczne) i przejście z wyrażeń regularnych na automaty Raczej nie. Lepiej mniejszy zakres i danie ludziom szansy uruchomienia swojej wyobraźni i współtworzenia języka (albo domyślania się znaczenia prezentowanych konstrukcji). Dzisiaj było bardzo dobrze

J.Nawrocki, Wyrażenia regularne i AWK Plan wykładu Wprowadzenie Idea języka AWK Najprostsze programy Wzorce wiersza Wyrażenia regularne Zmienne Zaawansowane mechanizmy AWK

J.Nawrocki, Wyrażenia regularne i AWK Wprowadzenie Problem konwersji plików FName:Jurek SName:Busz Salary 585 FName:Alek SName:Gor Salary 700 FName SName Salary Jurek Busz 585 Alek Gor 700

J.Nawrocki, Wyrażenia regularne i AWK Wprowadzenie Problem konwersji plików #include FILE *fin; char token[200]; char gettoken(void) {int i=0; char c; do {c = getc(fin); if (c == EOF) return (EOF); } while (c < ‘!’); #include FILE *fin; char token[200]; char gettoken(void) {int i=0; char c; do {c = getc(fin); if (c == EOF) return (EOF); } while (c < ‘!’); Rozwiązanie w C:  40 linii kodu

J.Nawrocki, Wyrażenia regularne i AWK Wprowadzenie Problem konwersji plików BEGIN {FS=":| ";} NR == 1 {print $1, "\t", $3, "\t", $5;} {gsub(/,/, ".”, $6); print $2, "\t", $4, "\t", $6;} BEGIN {FS=":| ";} NR == 1 {print $1, "\t", $3, "\t", $5;} {gsub(/,/, ".”, $6); print $2, "\t", $4, "\t", $6;} Rozwiązanie w AWK

J.Nawrocki, Wyrażenia regularne i AWK Wprowadzenie Powstanie języka AWK: Aho, Weinberger, Kernighan Bell Labs, New Jersey (USA), 1977 Platformy: Unix, MS DOS/Windows Podobieństwo do C

J.Nawrocki, Wyrażenia regularne i AWK Plan wykładu Wprowadzenie Idea języka AWK Najprostsze programy Wzorce wiersza Wyrażenia regularne Zmienne Zaawansowane mechanizmy AWK

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Jerzy Nawrocki I1 Jan Kowalski I2 Adam Malinowski I1 Pole Wiersz Pola: $1, $2, $3,... Plik wejściowy

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Schemat programu w AWK wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} Reguła przetwarzania

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Zasada działania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} Jerzy Nawrocki Jan Kowalski Adam Malinowski

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Zasada działania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} Jerzy Nawrocki Jan Kowalski Adam Malinowski

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Zasada działania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} Jerzy Nawrocki Jan Kowalski Adam Malinowski

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Zasada działania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} Jerzy Nawrocki Jan Kowalski Adam Malinowski

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Zasada działania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} Jerzy Nawrocki Jan Kowalski Adam Malinowski

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Zasada działania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} Jerzy Nawrocki Jan Kowalski Adam Malinowski

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Zasada działania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} Jerzy Nawrocki Jan Kowalski Adam Malinowski

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Zasada działania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} Jerzy Nawrocki Jan Kowalski Adam Malinowski

J.Nawrocki, Wyrażenia regularne i AWK Idea języka AWK Zasada działania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} Jerzy Nawrocki Jan Kowalski Adam Malinowski $0 oznacza bieżący wiersz

J.Nawrocki, Wyrażenia regularne i AWK Plan wykładu Wprowadzenie Idea języka AWK Najprostsze programy Wzorce wiersza Wyrażenia regularne Zmienne Zaawansowane mechanizmy AWK

J.Nawrocki, Wyrażenia regularne i AWK Najprostsze programy Nawrocki Jerzy Malinowski Adam $4==”I1” { print $2, $1; } Jerzy Nawrocki I1 Jan Kowalski I2 Adam Malinowski I1 Ile pól na wyjściu?

J.Nawrocki, Wyrażenia regularne i AWK Najprostsze programy Jerzy Nawrocki I1 Adam Malinowski I1 Jerzy Nawrocki I1 Jan Kowalski I2 Adam Malinowski I1 $4==”I1”$4==”I1” Ile pól na wyjściu?

J.Nawrocki, Wyrażenia regularne i AWK Nawrocki Jerzy Kowalski Jan Malinowski Adam Najprostsze programy { print $2, $1; } { print $2, $1; } Jerzy Nawrocki I1 Jan Kowalski I2 Adam Malinowski I1 Jakie pole najpierw?

J.Nawrocki, Wyrażenia regularne i AWK Nawrocki Jerzy Kowalski Jan Malinowski Adam Najprostsze programy Jak zrobić tabelę? Nawrocki Jerzy Kowalski Jan Malinowski Adam

J.Nawrocki, Wyrażenia regularne i AWK Nawrocki Jerzy Kowalski Jan Malinowski Adam Najprostsze programy # Nazwiska studentow { printf("%-15s %-9s\n", $2, $1); } { printf("%-15s %-9s\n", $2, $1); } # Nazwiska studentow { printf("%-15s %-9s\n", $2, $1); } { printf("%-15s %-9s\n", $2, $1); } Jerzy Nawrocki I1 Jan Kowalski I2 Adam Malinowski I1 Komentarz

J.Nawrocki, Wyrażenia regularne i AWK Plan wykładu Wprowadzenie Idea języka AWK Najprostsze programy Wzorce wiersza Wyrażenia regularne Zmienne Zaawansowane mechanizmy AWK

J.Nawrocki, Wyrażenia regularne i AWK Wzorce wiersza Początek i koniec tekstu Relacje Wzorce złożone Wzorce zakresu Wyrażenia regularne

J.Nawrocki, Wyrażenia regularne i AWK Kowalski Jan ***** Początek i koniec tekstu BEGIN { print ”-----”; } $4==”I2” { print $2, $1; } END { print ”*****”; } BEGIN { print ”-----”; } $4==”I2” { print $2, $1; } END { print ”*****”; } Jerzy Nawrocki I1 Jan Kowalski I2 Adam Malinowski I1

J.Nawrocki, Wyrażenia regularne i AWK dwa 11 Relacje $1 > $ dwa 11

J.Nawrocki, Wyrażenia regularne i AWK Wzorce złożone || lub (alternatywa) $1==1 || $2==1 && i (koniunkcja) $1==1 && $2==1 ! nie (zaprzeczenie) ! $1==1

J.Nawrocki, Wyrażenia regularne i AWK Wzorce złożone Jerzy Adam I1 Adam Kowalski I2 Adam Malinowski I1 $4==”I1” && $1==”Adam” { print $2, $1; } Malinowski Adam

J.Nawrocki, Wyrażenia regularne i AWK Wzorce zakresu Wzorzec 1, Wzorzec 2

J.Nawrocki, Wyrażenia regularne i AWK Wzorce zakresu Jerzy Adamski I1 Adam Kowalski I2 Adas Malinowski I1 /Adam/, /I2/ Jerzy Adamski I1 Adam Kowalski I2

J.Nawrocki, Wyrażenia regularne i AWK Plan wykładu Wprowadzenie Idea języka AWK Najprostsze programy Wzorce wiersza Wyrażenia regularne Zmienne Zaawansowane mechanizmy AWK

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Wyrażenie regularne: wzorzec opisujący zbiór ciągów znaków Wyrażenie regularne: 1+ Zbiór ciągów: {1, 11, 111, 1111,.. } Wyrażenie regularne: 1+ Zbiór ciągów: {1, 11, 111, 1111,.. }

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne wyrażenie ~ /wyrażenie_regularne/ Ciąg znakówZbiór ciągów znaków Wzorce z wyrażeniami regularnymi p {} p,.., a, b p 

J.Nawrocki, Wyrażenia regularne i AWK $1 ~ /1/ Wyrażenia regularne 1. pole wierszaZbiór 1-elementowy Wzorce z wyrażeniami regularnymi p {} 1 p 

J.Nawrocki, Wyrażenia regularne i AWK $1 ~ /1/ Wyrażenia regularne 1. pole wierszaZbiór 1-elementowy Wzorce z wyrażeniami regularnymi 1 {} 1 1 

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Zagadka Co robi ten program? $1 ~ /a/ Prawda kole W aureolę. J.Sztaudynger J.Sztaudynger

J.Nawrocki, Wyrażenia regularne i AWK Prawda kole J.Sztaudynger J.Sztaudynger Wyrażenia regularne Zagadka Co robi ten program? $1 ~ /a/ Prawda kole W aureolę. J.Sztaudynger J.Sztaudynger

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne wyrażenie !~ /wyrażenie_regularne/ Wzorce z wyrażeniami regularnymi Ciąg znakówZbiór ciągów znaków p {} p,.., a, b p  pp

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Wzorce z wyrażeniami regularnymi $1 !~ /1/ 1.pole wierszaZbiór 1-elementowy p {} 1 p  pp

J.Nawrocki, Wyrażenia regularne i AWK W aureolę. Wyrażenia regularne Zagadka Co robi ten program? $1 !~ /a/ Prawda kole W aureolę. J.Sztaudynger J.Sztaudynger

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne /wyrażenie_regularne/ Zbiór ciągów znaków Wzorce z wyrażeniami regularnymi A gdzie jest ciąg znaków? /1/ $0 ~ /1/ =

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Zagadka Co robi ten program? /z/ - Módl się i pracuj - Radzą przyjacioły, To się inni obłowią, a Ty będziesz goły.

J.Nawrocki, Wyrażenia regularne i AWK Radzą przyjacioły, a Ty będziesz goły. Wyrażenia regularne Zagadka Co robi ten program? /z/ - Módl się i pracuj - Radzą przyjacioły, To się inni obłowią, a Ty będziesz goły.

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Znaki specjalne ^ początek $ koniec. dowolny znak [ ] zbiór znaków \n nowa linia \. kropka \” znak cudzysłowu \ddd znak o kodzie oktalnym ddd

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Znaki specjalne /^n$/ Co robi ten program? /^.$/ /[ ]/ /[0-9]/

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Dopełnienie zbioru znaków /[^0-9]/ Co za różnica? /^[0-9]/ [^... ] ! /[0-9]/

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Podstawowe operatory /Adam/ Konkatenacja

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Zagadka Co zrobi ten program? /am/ Jabłek nie jadam. Zmądrzałem. Adam Adam

J.Nawrocki, Wyrażenia regularne i AWK Jabłek nie jadam. Adam Adam Wyrażenia regularne Zagadka Co zrobi ten program? /am/ Jabłek nie jadam. Zmądrzałem. Adam Adam

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Podstawowe operatory /Adam/ Konkatenacja /Adam | Jurek/ Alternatywa

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Zagadka Co robi ten program? /fi | ki/ Ząbki listka Nic tak nie potrafi gryźć Jak cudzy laurowy liść.

J.Nawrocki, Wyrażenia regularne i AWK Ząbki listka Nic tak nie potrafi gryźć Wyrażenia regularne Zagadka Co robi ten program? /fi | ki/ Ząbki listka Nic tak nie potrafi gryźć Jak cudzy laurowy liść.

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Podstawowe operatory /Adam/ Konkatenacja /Adam | Jurek/ Alternatywa /[0-9][0-9]*/ Domknięcie zwrotne [0-9] [0-9][0-9] [0-9][0-9][0-9]... [0-9] [0-9][0-9] [0-9][0-9][0-9]

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Zagadka Co robi ten program? $2 ~ /^[0-9][0-9]*$/ Nadgodziny 2001/02 ================ Nawrocki 60 Complak 359

J.Nawrocki, Wyrażenia regularne i AWK Nawrocki 60 Complak 359 Wyrażenia regularne Zagadka Co robi ten program? $2 ~ /^[0-9][0-9]*$/ Nadgodziny 2001/02 ================ Nawrocki 60 Complak 359

J.Nawrocki, Wyrażenia regularne i AWK Wyrażenia regularne Pozostałe elementy /[0-7][0-7]*(Q|O)/ Nawiasy () /[0-7]+ (Q|O)/ Domknięcie dodatnie + /[0-9]+ (D|d)?/ Opcjonalność ?

J.Nawrocki, Wyrażenia regularne i AWK Plan wykładu Wprowadzenie Idea języka AWK Najprostsze programy Wzorce wiersza Wyrażenia regularne Zmienne Zaawansowane mechanizmy AWK

J.Nawrocki, Wyrażenia regularne i AWK Zmienne Zmienne wprowadzone przez programistę (typ: ciąg znaków; wartość początkowa: ciąg pusty / zero) Zmienne polowe $1, $(i+j-1),.. Zmienne wbudowane (mają standardowe znaczenie)

J.Nawrocki, Wyrażenia regularne i AWK Zmienne {total= total + NF;} END {print "File: ", FILENAME; print "Num. of fields: ", total; print "Lines: ", NR;} {total= total + NF;} END {print "File: ", FILENAME; print "Num. of fields: ", total; print "Lines: ", NR;} NF - liczba pól w wierszu NR - numer wiersza FILENAME - nazwa pliku

J.Nawrocki, Wyrażenia regularne i AWK Plan wykładu Wprowadzenie Idea języka AWK Najprostsze programy Wzorce wiersza Wyrażenia regularne Zmienne Zaawansowane mechanizmy AWK

J.Nawrocki, Wyrażenia regularne i AWK Zawansowane mechanizmy AWK Funkcje wbudowane (gsub,..) Instrukcje złożone (if, while,..) Tablice dynamiczne Funkcje getline i next Operatory przekierowania

J.Nawrocki, Wyrażenia regularne i AWK Nawrocki 60 Complak 359 Zawansowane mechanizmy AWK Jerzy Nawrocki 20 Wojciech Complak 59 Jerzy Nawrocki 40 Wojciech Complak 300 {zl[$2]= zl[$2] + $3;} END {for (i in zl) print i, zl[i];} {zl[$2]= zl[$2] + $3;} END {for (i in zl) print i, zl[i];}

J.Nawrocki, Wyrażenia regularne i AWK Podsumowanie gawk -f prog.awk out.txt Proste ale użyteczne programy 15 kompletnych przykładów Wreszcie!

J.Nawrocki, Wyrażenia regularne i AWK Literatura A. Aho, B. Kernighan, P. Weinberger, The AWK Programming Language, Addison-Wesley, Reading, J. Nawrocki, W. Complak, Wprowadzenie do przetwarzania tekstów w języku AWK, Pro Dialog 2 (1994), 

J.Nawrocki, Wyrażenia regularne i AWK Ocena wykładu 1. Wrażenie ogólne? (1 - 6) 2. Zbyt wolno czy zbyt szybko? 3. Czy dowiedziałeś się czegoś ważnego? 4. Co poprawić i jak?