Przetwarzanie tekstów i AWK

Slides:



Advertisements
Podobne prezentacje
Wprowadzenie do informatyki Wykład 6
Advertisements

Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Informatyka Stosowana
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.
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
Programowanie imperatywne i język C
Języki formalne i gramatyki
Informatyka jako dziedzina wiedzy Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
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.
Wyrażenia regularne i język AWK
Komunikacja poprzez Internet
Dokumenty i prezentacje Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do.
Tablice.
Programowanie w C Wykład 3
Język ANSI C Operacje we/wy
Wprowadzenie do programowania w języku Turbo Pascal
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Podstawy programowania
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Podstawy programowania
Podstawy programowania. Język C i C++– podstawy Temat: 1
Podstawy programowania w języku C i C++
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Przetwarzanie tekstu i strony WWW Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
TABLICE C++.
Informatyka I - Wykład ANSI C
Modele obliczeń i granice obliczalności Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
Technologie internetowe II
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Jerzy Kotowski Politechnika Wrocławska
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
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
Procesy współbieżne Copyright, 2005 © Jerzy R. Nawrocki Wstęp do informatyki.
Podstawy języka Instrukcje - wprowadzenie
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.
Przetwarzanie tekstów i AWK
Dane, zmienne, instrukcje
Zapis prezentacji:

Przetwarzanie tekstów i AWK (c) Jerzy Nawrocki Wykład 7 Wprowadzenie do informatyki Wykład 7 Przetwarzanie tekstów i AWK Jerzy.Nawrocki@put.poznan.pl http://www.cs.put.poznan.pl/jnawrocki/wsb-wdi/ Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki

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, Przetwarzanie tekstów 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, Przetwarzanie tekstów 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, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów 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, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów 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, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Idea języka AWK Schemat programu w AWK Reguła przetwarzania wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} . . . . . . J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Idea języka AWK Zasada działania Jerzy Nawrocki Jan Kowalski Adam Malinowski wzorzec1 {instrukcje1} wzorzec2 {instrukcje2} . . . . . . J.Nawrocki, Przetwarzanie tekstów i AWK

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

J.Nawrocki, Przetwarzanie tekstów 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, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów 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, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Najprostsze programy Jakie pole najpierw? Jerzy Nawrocki 43089 I1 Jan Kowalski 43780 I2 Adam Malinowski 43990 I1 { print $2, $1; } J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Wzorce wiersza Początek i koniec tekstu Relacje Wzorce złożone Wzorce zakresu Wyrażenia regularne J.Nawrocki, Przetwarzanie tekstów 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, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Relacje 12 11 2 11 $1 > $2 J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Wzorce złożone || lub (alternatywa) $1==1 || $2==1 && i (koniunkcja) $1==1 && $2==1 ! nie (zaprzeczenie) ! $1==1 J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów 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, Przetwarzanie tekstów i AWK

Wzorce z wyrażeniami regularnymi Róża prawdziwa i sztuczna 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! Np. znak lub ciąg znaków $0, $1, $2, .. Cały ciąg Ciąg_zn ~ /^ wyr_reg $/ $1 ~ /^A$/ J.Nawrocki, Przetwarzanie tekstów i AWK

Wzorce z wyrażeniami regularnymi Róża prawdziwa i sztuczna 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! Np. znak lub ciąg znaków $0, $1, $2, .. Cały ciąg Ciąg_zn ~ /^ wyr_reg $/ Początek Ciąg_zn ~ /^ wyr_reg / $1 ~ /^A/ J.Nawrocki, Przetwarzanie tekstów i AWK

Wzorce z wyrażeniami regularnymi Róża prawdziwa i sztuczna 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! Np. znak lub ciąg znaków $0, $1, $2, .. Cały ciąg Ciąg_zn ~ /^ wyr_reg $/ Początek Ciąg_zn ~ /^ wyr_reg / Koniec Ciąg_zn ~ / wyr_reg $/ $1 ~ /dzi$/ J.Nawrocki, Przetwarzanie tekstów i AWK

Wzorce z wyrażeniami regularnymi Róża prawdziwa i sztuczna 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! Np. znak lub ciąg znaków $0, $1, $2, .. Cały ciąg Ciąg_zn ~ /^ wyr_reg $/ Początek Ciąg_zn ~ /^ wyr_reg / Koniec Ciąg_zn ~ / wyr_reg $/ $1 ~ /dzi/ Podciąg Ciąg_zn ~ / wyr_reg / J.Nawrocki, Przetwarzanie tekstów i AWK

Wzorce z wyrażeniami regularnymi Róża prawdziwa i sztuczna 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! Np. znak lub ciąg znaków $0, $1, $2, .. Cały ciąg Ciąg_zn ~ /^ wyr_reg $/ Początek Ciąg_zn ~ /^ wyr_reg / Koniec Ciąg_zn ~ / wyr_reg $/ /dzi/ Podciąg Ciąg_zn ~ / wyr_reg / $0 ~ / wyr_reg / = / wyr_reg / J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Znaki specjalne . dowolny znak [ ] zbiór znaków \n nowa linia \. kropka \” znak cudzysłowu \ddd znak o kodzie oktalnym ddd J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Znaki specjalne Co robi ten program? /^.$/ /[0123456789]/ /[0-9]/ J.Nawrocki, Przetwarzanie tekstów i AWK

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

J.Nawrocki, Przetwarzanie tekstów i AWK Alternatywa (lub) wyr_reg | wyr_reg Ząbki listka Nic tak nie potrafi gryźć Jak cudzy laurowy liść. Co robi ten program? /fi | ki/ J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Operator powtarzania Wypisz wszystkie wiersze, w których pierwsze pole jest liczbą. 1 2 3 Rok 1984 4 damy Po3maj 2 raki $1 ~ /[0-9]/ J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Operator powtarzania Wypisz wszystkie wiersze, w których pierwsze pole jest liczbą 1-cyfrową. 1 2 3 Rok 1984 4 damy Po3maj 2 raki $1 ~ /^ [0-9] $/ J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Operator powtarzania Wypisz wszystkie wiersze, w których pierwsze pole jest liczbą. Po3maj 32 raki $1 ~ /^ [0-9] $/ J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Operator powtarzania Wypisz wszystkie wiersze, w których pierwsze pole jest liczbą 1- lub 2-cyfrową. 1 2 3 Rok 1984 4 damy Po3maj 2 raki Po3maj 32 raki Po3maj 32 raki 120 zl $1 ~ /^ [0-9] | [0-9][0-9] $/ J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Operator powtarzania Wypisz wszystkie wiersze, w których pierwsze pole jest liczbą. 1 2 3 Rok 1984 4 damy Po3maj 2 raki Po3maj 32 raki Po3maj 32 raki 120 zl $1 ~ /^ [0-9] | [0-9][0-9] | [0-9][0-9][0-9] $/ 1 cyfra 2 cyfry 3 cyfry J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Operator powtarzania [0-9] = [0-9]1 [0-9][0-9] = [0-9]2 [0-9][0-9][0-9] = [0-9]3 . . . . . . . . . . . . . . . . . . [0-9]1 | [0-9]2 | [0-9]3 | ... = [0-9]+ J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Operator powtarzania Wypisz wszystkie wiersze, w których pierwsze pole jest liczbą. 1 2 3 Rok 1984 4 damy Po3maj 2 raki Po3maj 32 raki Po3maj 32 raki 120 zl $1 ~ /^ [0-9]+ $/ J.Nawrocki, Przetwarzanie tekstów i AWK

Operator powtarzania * Musi przynajmniej raz wystąpić w. Może wystąpić sekwencja w. w+ = w | ww | www | . . . w* =  | w | ww | www | . . . w( | w | ww | www |.. )= w|ww|www|wwww|.. Ciąg pusty x  = x  x = x w+ = w w* = w* w x w* = x | x w+ w*x = x | w+x J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Zagadka Co robi ten program? $2 ~ /^[0-9][0-9]*$/ J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Zagadka Nadgodziny 2001/02 ================ Nawrocki 60 Complak 359 Co robi ten program? $2 ~ /^[0-9]+$/ J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Nawiasy 17Q 10O O /^[0-7]+(Q|O)$/ /^[0-7]+Q|O$/ J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Opcjonalność 14 15D 16d D17 D /^ [0-9]+(D|d)? $/ J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów 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, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Zmienne NR NF total Reguly sitwy ------------ Zero do zera A bedzie kariera. 1 2 2 {total= total + NF;} END {print "Pol: ", total; print "Wierszy: ", NR;} NF - liczba pól w wierszu NR - numer wiersza FILENAME - nazwa pliku J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów i AWK Podsumowanie gawk -f prog.awk <in.txt >out.txt Wyrażenia regularne Zmienne Inne mechanizmy AWK: Instrukcje złożone (if, while, ..) Tablice dynamiczne Funkcje wbudowane (gsub, ..) Wreszcie! J.Nawrocki, Przetwarzanie tekstów i AWK

J.Nawrocki, Przetwarzanie tekstów 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, Przetwarzanie tekstów i AWK