Technologie informacyjne

Transkrypt

Technologie informacyjne
Technologie informacyjne
Laboratorium, lista 4
We wszystkich częściach będziemy pracować w systemie Linux.
Część 1 (przygotowanie)
Polecenie wget ściąga plik z internetu i zapisuje go na dysku. Wykorzystamy
je do zdobycia pliku testowego.
1. Ściągnij stronę o liczbie π z Wikipedii w języku Polskim (https://pl.
wikipedia.org/wiki/Pi). Możesz posłużyć się komendą
wget https://pl.wikipedia.org/wiki/Pi -O pi.html
przy czym opcja -O pozwalaj podać nazwę pliku do zapisu.
Część 2 (strumienie w Linuxie)
Materiał w dużej mierze demonstracyjny. Dla osób zainteresowanych przerobieniem tego materiału dokładniej we własnym zakresie (nie ma go na
wykładzie), proponujemy artykuły firmy IBM opublikowane pod adresem
https://www.ibm.com/developerworks/library/l-lpic1-map/index.html#
101-103, w szczególności http://www.ibm.com/developerworks/library/
l-lpic1-v3-103-4.
Część 3 (wyszukiwanie)
1.
2.
3.
4.
5.
6.
Znajdź w artykule i podświetl słowo „ludolfina” pisane małą literą.
W ilu liniach w artykule występuje to słowo?
Ile różnych odmian nazwiska Euler pojawia się w artykule?
Ile razy w artykule pojawia się nazwisko Euler, a ile razy Archimedes?
Ile razy w artykule występuje słowo „pi” pisane wielką bądź małą literą?
Znajdź w artykule wszystkie adresy stron internetowych zawierające
de.wikipedia.org — na podstawie tego ustal, jak liczba π nazywa się
po niemiecku.
1
Ściągawka z programu grep
Polecenie grep przeszukuje wskazany plik, szukając tekstu pasującego
do wzorca. Jako wynik wyświetla wiersze zawierające ten wzorzec. Można
podać więcej plików do przeszukania, wtedy będą wyświetlone zarówno
pasujące wiersze tekstu, jak i źródło (nazwa pliku), z którego pochodzą.
Wyszukiwanie wzorca w pliku odbywa się za pomocą komendy:
grep "wzorzec" plik
Dodatkowo możemy podać szereg opcji, pozwalających na sterowanie funkcjami programu grep.
Opcje funkcji grep pozwalające na sterowanie kontekstem:
— --color[=KIEDY] opcja ta powoduje kolorowanie szukanego wzorca,
szukany wzorzec. KIEDY może przyjmować wartości always (zawsze),
never (nigdy) albo auto (automatycznie),
— -C N (--context=N) wypisuje N linii kontekstu w którym występuje
szukany wzorzec.
Opcje funkcji grep pozwalające na sterowanie danymi wyjściowymi:
— -n (--line-number) wypisuje numery linii w wyniku,
— -l (--files-with-matches) wypisuje tylko nazwy plików zawierających szukaną frazę,
— -c (--count) wyświetla tylko liczbę linii w których znajduje się wzorzec,
— -o (--only-matching) wyświetla tylko dopasowane słowa, nie całe
linie.
Opcje funkcji grep pozwalające na sterowanie danymi wejściowymi:
— -r przeszukiwanie całych drzew katalogów,
— --include=wzorzec przeszukuje tylko pliki o nazwach pasujących do
wzorca (wzorzec może zawierać na przykład * — dowolny ciąg znaków,
? — dowolny znak, [...] — alternatywne wersje).
— --exclude=wzorzec przeszukuje tylko pliki o nazwach niepasujących
do wzorca.
To tylko część dostępnych opcji. Więcej możemy przeczytać korzystając
z pomocy w
grep --help
lub
man grep
Metaznaki:
— ^ początek wiersza,
— $ koniec wiersza,
— \< początek słowa,
— \> koniec słowa,
— [znaki] występuje jeden znak z zestawu,
2
—
—
—
—
—
[^znaki] nie występuje żaden znak z zestawu,
. dowolny pojedynczy znak,
+ występuje jeden lub więcej wypisanych znaków,
* występuje zero lub więcej wypisanych znaków,
{min,max} wyrażenie występuje minimum min razy a maksymalnie max
razy,
— \(a\|b\|...\) jedno z wyrażeń.
Przykłady:
1. Wyszukanie w tekście słów „Euler” oraz „Eulera”, ale nie „Eulerowi”:
grep "\<\(Euler\|Eulera\)\>" pi.html --color
albo
grep "\<Euler[a]\?\>" pi.html --color
2. Wyszukanie w tekście liczby zapisanej z kropką lub przecinkiem, zaczynającej się od 3.14:
grep "\<3[.,]14[0-9 ]*\>" pi.html --color
3. Liczba linii zawierająca linki w pliku (zakładamy postać <a parametry>tekst</a>):
grep "<a[^>]*>" pi.html --count
4. Różne odmiany nazwiska Archimedes:
grep "\<Archimedes[a-z]*\>" pi.html -o
Wyniki dowolnej komendy możemy posortować komendą sort (dodanie opcji -u powoduje, że duplikaty są ignorowane):
grep "\<Archimedes[a-z]*\>" pi.html -o | sort -u
Komenda wc pozwala na liczenie (-l — lini, -m — znaków, -w — słów):
grep "\<Archimedes[a-z]*\>" pi.html -o | sort -u | wc -l
(jak widać, w artykule są trzy odmiany nazwiska Archimedes: Archimedes, Archimedesa, Archimedesowi).a
5. Adresy stron internetowych zawierające pl.wikipedia.org:
grep "\"[^\"]*pl.wikipedia.org[^\"]*\"" pi.html -o
3