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

Podobne dokumenty
Bash - wprowadzenie. Bash - wprowadzenie 1/39

Wstęp do informatyki 2011/2012. Wyrażenia regularne (sed)

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

J ezyk AWK Kurs systemu UNIX

System operacyjny Linux

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

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

Wstęp do systemów wielozadaniowych laboratorium 19 awk

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

Języki formalne i automaty Ćwiczenia 6

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Powłoka bash. Kurs systemu Unix 1

Systemy operacyjne 12

System operacyjny Linux

Wstęp do Informatyki dla bioinformatyków

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

1 Przygotował: mgr inż. Maciej Lasota

1. Znajdź za pomocą programu locate wszystkie pliki które zawierają w nazwie słowo netscape locate netscape

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

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

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

Architektura systemów informatycznych. Powłoka systemowa Architektura procesora

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

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

Przekierowanie wejścia wyjścia:

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

$ awk f plik_z_programem plik_wejsciowy1 plik_wejsciowy2...

Wyrażenia regularne. Wojciech Tabiś Łukasz Jankowski

Skrypty startowe. Tryb interaktywny tryb logowania: nie logowanie: Tryb nieinteraktywny

Metody numeryczne Laboratorium 2

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Technologie Informacyjne - Linux 3

Wyrażenia regularne. Regular expressions. aka. Regexp

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Zakład Systemów Rozproszonych

Środowisko programisty Zestaw 7

PODSTAWY INFORMATYKI

Różne pożyteczne polecenia oraz wyrażenia regularne. Kurs systemu Unix 1

Środowisko programisty Zestaw 4

1. Wyrażenia regularne. Symbole w wyrażeniach regularnych 1 :

- wszystkie elementy - wszystkie elementy

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

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

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

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

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

Skrypty powłoki w systemie Linux

Systemy operacyjne Programowanie w języku powłoki sh

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Skanowanie OCR w aplikacji Kancelaria Komornika. Instrukcja dla użytkownika

Linux: System Plików

W pierwszej kolumnie wyświetlany jest identyfikator procesu (pid)

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

Edytor strumieniowy sed

Trochę o plikach wsadowych (Windows)

Systemy operacyjne / Programowanie w języku powłoki sh str.1/19

Programowanie w BASH u Skrypt do ćwiczeń

Zastosowanie filtrów w Linuksie

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

Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie skryptów powłoki

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA

Interpreter poleceń oraz zmienne środowiskowe

Umożliwia ona pokazanie ukrytych plików i katalogów, nazwa ich zaczyna się od kropki.

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

Programowanie w języku Python. Grażyna Koba

Podstawy informatyki

OPCJE -A num, --after-context=num Wypisuje po pasujących liniach num linii następującego kontekstu.

Kurs systemu Unix wykład wstępny. Kurs systemu Unix 1

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

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

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

Niektóre katalogi są standardowymi katalogami zarezerwowanymi do użytku przez system. Znaczenie wybranych katalogów systemowych jest następujące:

1 Podstawy c++ w pigułce.

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Znaki globalne w Linuxie

KARTA KURSU. Języki skryptowe

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

Powłoka interpreter poleceń systemu UNIX

2.6 Edytor sed (Stream Editor)

Powłoka (shell) Powłoka ksh

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Wyrażenie wewnątrz nawiasów jest atomem (rozpatrujemy je jako całość).

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

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

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

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Środowisko programisty Zestaw 5

UNIX - KOLOKWIUM 3. #include <stdio.h> #include <unistd.h>

Systemy operacyjne 11

Wstęp do systemu Linux

Zadanie analizy leksykalnej

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Linux Polecenia. Problem nadpisywania plików. Zmienna noclobber i noglob. Filtry i metaznaki. Problem nadpisywania plików. Opracował: Andrzej Nowak

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

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

Filtry, metaznaki, cytowania. Proste skrypty. Polecenia find, tee, mail.

Wyrażenia regularne w Perlu. Narzędzia informatyczne w językoznawstwie. Przykład bardziej sensowny perlowy minigrep.pl. Pierwsze przykłady

Transkrypt:

Wyrażenia regularne Wyrażenia regularne 1/41

Wyrażenia regularne 2/41 Po co wyrażenia regularne? Polecenie: $ grep est tekst.txt Zawartość tekst.txt To jest plik tekstowy. Testujemy narzędzie grep. Trzecia linia. A to czwarta linia. Efekt wywołania polecenia To jest plik tekstowy. Testujemy narzędzie grep.

Wyrażenia regularne 3/41 Znaki Znaki specjalne. ^ $ *? [ ] \ Zbiór znaków Definiowany za pomocą konstrukcji [set]. Np. wyrazy Ala, Ola, Ela odpowiadają wyrażeniu [AOE]la Aby dopasować wyrażenie do wszystkich znaków oprócz znaków z pewnego zbioru, używa się wyrażenia [^set] Zakres znaków tworzy się następująco: [a-z] Znak. Znak. pasuje dokładnie do jednego, dowolnego znaku (z wyjątkiem znaku końca linii).

Wyrażenia regularne 4/41 Klasy znakowe Klasa [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:punct:] Dopasowywane znaki Znaki alfanumeryczne Znaki alfabetyczne Znaki spacji i tabulacji Znaki sterujące Znaki numeryczne Znaki przestankowe

Wyrażenia regularne 5/41 Powtórzenia Symbol Opis * poprzedzający znak może wystąpić 0 lub więcej razy + poprzedzający znak może wystąpić 1 lub więcej razy? poprzedzający znak może wystąpić 0 lub raz {n} poprzedzający znak musi wystąpić dokładnie n razy {n,} poprzedzający znak musi wystąpić co najmniej n razy {,m} poprzedzający znak musi wystąpić co najwyżej m razy {n,m} poprzedzający znak musi wystąpić od n do m razy

Wyrażenia regularne 6/41 Przykłady powtórzeń Wyrażenie 11*0 Pasuje do: 10 110 111110 111111111111111111110 Wyrażenie: 10\{2,4\}1 Pasuje do: 1001 10001 100001 Nie pasuje do: 101

Wyrażenia regularne 7/41 Pozycjonowanie wzorców Symbol Opis ^ wzorzec musi znaleźć się na początku linii $ wzorzec musi znaleźć się na końcu linii \< w tym miejscu zaczyna się nowe słowo \> w tym miejscu kończy się słowo \b w tym miejscu jest krawędź słowa (nie zaczyna ani nie kończy się żadne słowo) \B w tym miejscu nie znajduje się krawędź słowa Przykład ^[^.]*\.[^.]*$

Wyrażenia regularne 8/41 Pozycjonowanie wzorców przykłady Dla linii Jola jest lojalna Wyrażenia dopasowane \<jest\> \bjest\b \Best\b \Bes\B Wyrażenia niedopasowane \<est\> \best\b \Bes\b \>jest\<

Wyrażenia regularne 9/41 Priorytety i nawiasy Znaki (... ) Znaki (... ) służą do grupowania elementów. Przykład ([a-z][a-z])* Alternatywa Do oznaczenia alternatywy służy znak. Przykład [0-9]* [a-z]* [A-Z]* (Ta Do)[a-z]*

Wyrażenia regularne 10/41 Polecenie grep Podstawowe użycie $ grep wzorzec plik1 plik2 plik3... Parametry polecenie grep Parametr Opis -e alternatywny sposób podania wzorca -i ignoruje rozróżnianie wielkich liter -c zlicza wystąpienie wzorca -w dopasowuje wzorzec tylko do całych słów -x dopasowuje wzorzec tylko do całych linii -v wypisuje tylko linie, w których nie odnaleziono wzorca -q nic nie wypisuje i kończy działanie po pierwszym dopasowaniu

Wyrażenia regularne 11/41 Polecenie grep Parametry polecenie grep cd. Parametr Opis -E rozszerzona składnia wyrażeń regularnych -G podstawowa składnia wyrażeń regularnych -n wypisuje numer linii pliku, w której dopasowano wzorzec -l wypisuje tylko nazwę pliku, w którym znalazło się przynajmniej jedno dopasowanie -H dla każdego dopasowania wypisuje nazwę pliku --color=auto zaznacza kolorem dopasowany fragment

Wyrażenia regularne 12/41 Przykłady użycia polecenia grep Przykład 1 if grep -qw TODO opis_prac.txt; then echo "Zostało jeszcze coś do zrobienia" fi Przykład 2 TMPFILE=/tmp/xyzabcd cp plik $TMPFILE grep -xv wzorzec $TMPFILE >plik rm -f $TMPFILE

Wyrażenia regularne 13/41 Dopasowywanie wyrażeń Od wersji 3.0 powłoki bash można dopasowywać wyrażenia Składnia: [[ napis =~ wyrażenie ]] if [[ abcfoobarbletch =~ foo(bar)bl(.*) ]] then echo "Dopasowanie udało się\!" echo $BASH_REMATCH # wypisuje: foobarbletch echo ${BASH_REMATCH[1]} # wypisuje: bar echo ${BASH_REMATCH[2]} # wypisuje: etch fi

Wyrażenia regularne 14/41 Polecenie expr Składnia expr łańcuch : wzorzec Przykład Wyświetlenie rozszerzenia pliku znajdującego się w zmiennej plik expr "$plik" : ".*\.\([^.]*\)" Zmiana rozszerzenia.tar.gz na tgz pliku zmiennej plik %$ if expr "$plik" : ".*\.tar\.gz$"; then mv $plik $(expr "$plik" : "\(.*\.\)tar\.gz")tgz fi

Wyrażenia regularne 15/41 Edytor strumieniowy sed Składnia użycia $ sed instrukcja plik Opcje wiersza poleceń Opcja Opis -e Poprzedza instrukcję edycji -f Poprzedza nazwę pliku ze skryptem -n Powstrzymaj automatyczne wyprowadzanie wierszy wyjścia

Wyrażenia regularne 16/41 Podstawianie Składnia z użyciem sed $ sed [pozycja]s/znajdz/zmien/flaga plik > plik.mod Objaśnienie pozycja wskazuje linię do edytowania (opcjonalnie) s wskazuje sed dokonywanie instrukcji podmiany znajdz ciąg, który ma być znaleziony i który będzie zmieniany zmien ciąg, na który zmieniony zostanie znajdz flaga kontroluje zachowanie, np. g zmienia wszystkie wystąpienia w linii, n zmienia n-te wystąpienie w linii, p wypisuje dopasowany ciąg znajdz

Wyrażenia regularne 17/41 Podstawianie cd. znaki specjalne w zmien & zastępowany łańcuchem dopasowanym przez wyrażenie regularne \n dopasowuje się do n-tego podłańcucha (n jest pojedynczą cyfrą) wcześniej określonego za pomocą nawiasów okrągłych \ cofa specjalne znaczenie znaków Przykład Polecenie s/patrz punkt [1-9][0-9]*\.[1-9][0-9]*/(&)/ zamieni Patrz punkt 1.4 na (Patrz punkt 1.4)

Wyrażenia regularne 18/41 Podstawianie cd. Przykłady $ echo abc12abcd sed s/\([a-z]*\)[0-9]*\([a-z]*\)/\1/ wynik działania: abc $ echo abc12abcd sed s/\([a-z]*\)[0-9]*\([a-z]*\)/\2/ wynik działania: abcd $ echo abc12 sed s/\([a-z]*\)[0-9]*\([a-z]*\)/\2/ wynik działania:

Wyrażenia regularne 19/41 Przykłady wywołań sed Przykład $ echo abc 123 sed s/abc/def/ def 123 $ echo Hej!! Hej!!!! Tutaj! sed s/!\+/!/g Hej! Hej! Tutaj! $ echo Hej!! Hej!!!! Tutaj! sed s/!\+/!/ Hej! Hej!!!! Tutaj!

Wyrażenia regularne 20/41 Usuwanie linii Składnia Składnia dla usuwania linii sed /wzor/d plik > plik.mod gdzie: wzor wyrażenie regularne d polecenie usuwania Usunięcie każdej linii rozpoczynającej się znakiem # sed /^#/d file > file.mod

Wyrażenia regularne 21/41 Usuwanie linii a usuwanie słów Różnica między nimi Usuwanie wszystkich wystąpień słowa abc w pliku sed s/abc//g plik > plik.mod Usuwanie każdej linii zawierającej słowo abc sed /abc/d plik > plik.mod

Wyrażenia regularne 22/41 Polecenie transformuj Składnia Składnia dla przekształcania znaków sed y/abc/xyz/ plik > plik.mod gdzie: abc znaki zastępowane xyz znaki zastępujące Każdy znak zastępujący odpowiada pojedynczemu znakowi zastępowanemu. y/abcdefghijklmnopqrstuvwxyz/abcdefghijklmnopqrstuvwxyz/ Zastępuje małe litery ich dużymi odpowiednikami.

Wyrażenia regularne 23/41 Separatory Zamiana /var/www/ ciągiem /var/local/www/ wymaga anulowania specjalnego znaczenia znaku \ sed s/\/var\/www\//\/var\/local\/www\//g file > file.mod Można użyć innego separatora w celu skrócenia zapisu sed s:/var/www/:/var/local/www/:g file > file.mod

Wyrażenia regularne 24/41 Pozycjonowanie Przykłady Usuń słowo abc w liniach rozpoczynających się od słowa xyz sed /^xyz/s/abc//g file > file.mod Usuń słowo abc w liniach od 1 do 50 sed 1,50s/abc//g file > file.mod Usuń słowo abc we wszystkich liniach oprócz linii od 1 do 50 sed 1,50!s/abc//g file > file.mod

Wyrażenia regularne 25/41 Pozycjonowanie Przykłady Usuń słowo abc w liniach, które zawierają się pomiędzy liniami zawierającymi aaa oraz ccc sed /aaa/,/ccc/s/abc//g plik > plik.mod Usuń pierwsze 50 linii pliku sed 1,50d plik > plik.mod Pozostaw pierwsze 50 linii pliku i usuń wszystkie pozostałe sed 1,50!d plik > plik.mod

Zdanie zawierające tagi HTML. Wyrażenia regularne 26/41 Praktyczny przykład Usuwanie tagów HTML Przykładowa linia zawierająca znaczniki HTML <b>zdanie</b> zawierające <i>tagi</i> HTML. To polecenie dopasowuje tekst znajdujący się pomiędzy pierwszym znakiem <, a ostatnim znakiem > sed s/<.*>//g plik.html i daje w rezultacie HTML. Poprawniejsza składnia (usunięcie tylko tagów) sed s/<[^>]*>//g plik.html daje oczekiwany rezultat

Wyrażenia regularne 27/41 Język awk - podstawy Podstawy składni $ cat plik abc sef aaab fedg abc abc aa a b c $ awk {print} plik abc sef aaab fedg abc abc aa a b c

Wyrażenia regularne 28/41 Język awk - przykłady Operacje na wzorcach $ awk /abc/ {print} plik abc sef abc abc $ awk /abc/ {print $2} plik sef abc $ awk BEGIN {print "Kolumna"}; /abc/ {print $2} plik Kolumna sef abc

Wyrażenia regularne 29/41 Język awk Witaj świecie $ awk {print "Hello World"} plik Hello World Hello World Hello World Hello World Hello World Hello World $ awk BEGIN {print "Hello World"} Hello World

Model programowania awk Wyrażenia regularne 30/41

Wyrażenia regularne 31/41 Ogólna postać programu w języku awk BEGIN <wzorzec 1> <wzorzec 2>... END {<instrukcje inicjalizacji>} {<operacje na wierszach>} {<operacje na wierszach>} {<instrukcje zamykające>}

Wyrażenia regularne 32/41 Dopasowywanie wzorca Przykład skryptu #!/usr/bin/awk -f # zbadaj wprowadzony znak /[0-9]+/ {print "Liczba"} /[A-Za-z]+/ {print "Litera"} /^$/ {print "Wiersz pusty"} Wywołanie./nazwa_skryptu lub awk -f nazwa_skryptu

Wyrażenia regularne 33/41 Zmienne Przykłady $ awk BEGIN {a=1; b=2; print a+b} 3 $ awk BEGIN {a=1.3; b=2.4; print a+b} 3.7 $ awk BEGIN {a="abc"; b="cde"; print a+b} 0 $ awk BEGIN {a="abc"; b="cde"; c=a b; print a b, c} abccde abccde $ awk BEGIN {print sqrt(2)} 1.41421

Wyrażenia regularne 34/41 Zmienne specjalne Separator pola $ awk BEGIN {FS=":"} {print $1} /etc/passwd można go również określić w linii poleceń awk -F: {print $1} /etc/passwd Inne zmienne NF liczba pól RS separator rekordu OFS separator pola dla wyjścia ORS separator rekordu dla wyjścia NR numer linii w pliku

Wyrażenia regularne 35/41 Instrukcje sterujące Instrukcja if Składnia: if ( warunek ) akcja_1 [else akcja_2] Przykład: $ awk -F: {if ($3>=1000) print $1} /etc/passwd

Wyrażenia regularne 36/41 Instrukcje sterujące Instrukcja for Składnia for (a_początkowa; warunek; a_koniec_iteracji ) akcja Przykład: $ awk BEGIN {for (i=0; i<6; i++) print i}

Wyrażenia regularne 37/41 Instrukcje sterujące Instrukcja while Składnia: while (warunek) akcja Przykład: #!/usr/bin/awk -f BEGIN { } i = 0 while (i<6) { print i i+=1 }

Wyrażenia regularne 38/41 Wyszukiwanie linii Dziesiąta linia $ awk -F: NR==10 {print $1} /etc/passwd W trzeciej kolumnie znajdować musi się wartość większa od 100 $ awk -F: $3>100 {print $1} /etc/passwd W pierwszej kolumnie znajdować musi się napis root $ awk -F: $1 ~ /root/ {print $3} /etc/passwd Domyślną powłoką użytkownika ma być bash $ awk -F: $NF ~ /\/bash$/ {print $1} /etc/passwd

Wyrażenia regularne 39/41 Tablice Tablice zwykłe tablica[1], tablica[2], tablica[3]... Tablice asocjacyjne debts["kim"], debts["roberto"], debts["vic"]...

Wyrażenia regularne 40/41 Przykład wykorzystania tablic asocjacyjnych count users0.awk #!/bin/awk -f { username[$3]++; } END { for (i in username) { print username[i], i; } } Wywołanie: $ ls -l./count_users0.awk

Wyrażenia regularne 41/41 W wykładzie wykorzystano materiały Środowisko programisty, http://mediawiki.ilab.pl/index.php/%c5%9arodowisko programisty Dale Dougherty, Arnold Robbins, sed i awk, Helion, 2002 http://www.grymoire.com/unix/awk.html