Wyrażenia regularne i język AWK

Slides:



Advertisements
Podobne prezentacje
Wprowadzenie do informatyki Wykład 6
Advertisements

Programowanie wizualne PW – LAB6 Wojciech Pieprzyca.
Programowanie w języku Visual Basic
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
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.
Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty zakres globalny : cały program zakres lokalny : definicja pojedynczej.
Przetwarzanie tekstów i AWK Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Imperatywne modele obliczeń Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Procesy współbieżne Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Przetwarzanie tekstów i AWK Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Obliczalność i złożoność obliczeniowa
Copyright © Jerzy R. Nawrocki Standardy serii ISO Inżynieria oprogramowania II Wykład.
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Metody numeryczne Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
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.
Język asemblera i koncepcja von Neumanna
Przetwarzanie tekstów i AWK
Programowanie imperatywne i język C
Języki formalne i gramatyki
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
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Testowanie oprogramowania
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Dokumenty i prezentacje Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do.
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
Tablice.
Programowanie w C Wykład 3
Język ANSI C Operacje we/wy
Wykład 2 struktura programu elementy języka typy zmienne
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Podstawy programowania. Język C i C++– podstawy Temat: 1
Podstawy programowania w języku C i C++
Przetwarzanie tekstu i strony WWW Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Informatyka I - Wykład ANSI C
Podstawy programowania
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Instrukcja warunkowa i wyboru
Translatory Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11.
Gramatyki i translatory
Podstawy języka Instrukcje - wprowadzenie
Podstawy programowania (4)
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Dokumenty elektroniczne Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie do.
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
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,
Wyrażenia regularne i język AWK Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
Przetwarzanie tekstów i AWK
Dane, zmienne, instrukcje
Zapis prezentacji:

Wyrażenia regularne i język AWK (c) Jerzy Nawrocki TPI, Wykład 6 Teoretyczne podstawy informatyki Wykład 6 Wyrażenia regularne i język AWK Jerzy.Nawrocki@put.poznan.pl http://www.cs.put.poznan.pl/jnawrocki/tpi/ Copyright, 2003 © Jerzy R. Nawrocki Wyrażenia regularne i język AWK

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

Problem konwersji plików 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

Problem konwersji plików Wprowadzenie Problem konwersji plików #include <stdio.h> #include <stdlib.h> 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

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

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

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

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

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

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

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

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

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

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

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

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

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

J.Nawrocki, Wyrażenia regularne i AWK Wzorce zakresu Wzorzec1 , Wzorzec2 J.Nawrocki, Wyrażenia regularne i AWK

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

J.Nawrocki, Wyrażenia regularne i AWK 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, .. } J.Nawrocki, Wyrażenia regularne i AWK

Wzorce z wyrażeniami regularnymi Wyrażenia regularne Wzorce z wyrażeniami regularnymi Ciąg znaków Zbiór ciągów znaków wyrażenie ~ /wyrażenie_regularne/ $1 ~ /1/ J.Nawrocki, Wyrażenia regularne i AWK

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

Wzorce z wyrażeniami regularnymi Wyrażenia regularne Wzorce z wyrażeniami regularnymi Ciąg znaków Zbiór ciągów znaków wyrażenie !~ /wyrażenie_regularne/ $1 !~ /1/ J.Nawrocki, Wyrażenia regularne i AWK

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

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

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

J.Nawrocki, Wyrażenia regularne i AWK 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

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

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

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

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

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

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

J.Nawrocki, Wyrażenia regularne i AWK Pozostałe elementy Nawiasy () /[0-7][0-7]*(Q|O)/ Domknięcie dodatnie + /[0-7]+ (Q|O)/ Opcjonalność ? /[0-9]+ (D|d)?/ J.Nawrocki, Wyrażenia regularne i 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 wbudowane (mają standardowe znaczenie) Zmienne polowe $1, $(i+j-1), .. J.Nawrocki, Wyrażenia regularne i AWK

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

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];} Nawrocki 60 Complak 359 J.Nawrocki, Wyrażenia regularne i AWK

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

J.Nawrocki, Wyrażenia regularne i AWK 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.  J.Nawrocki, Wyrażenia regularne i AWK