powrót
Ćwiczenia 3
tee
$ tee <plik1>
Przełączniki:
-a
tac
$ tac <plik>
Przetwarzanie potokowe
|
Przykład:
$ ls -l /home/students/ | less
Filtry
head
tail
Przełączniki:
-c <n>
-n <n>
Przykład:
$ head p1
$ head -c 2 p1
$ head -n 4 p1
sort
$ sort <plik>
Przełączniki:
-r
Przykład:
$ sort p1
$ sort -r p1
uniq
$ uniq <plik1>
Przełączniki:
-d
-u
-c
Przykład:
Ściągamy pliki:
p3
poleceniem:
$ wget "http://zurowski.faculty.wmi.amu.edu.pl/dydaktyka/zima-2014/SOP/p3"
$ uniq p3
$ uniq -d p3
$ uniq -u p3
$ uniq -c p3
wc
[Word Counter]
$ wc <plik>
Przełączniki:
-l
-w
-c
Przykład:
$ wc p3
$ wc -l p3
$ wc -w p3
$ wc -c p3
tr
$ tr <łańcuch1> <łańcuch2>
Przełączniki:
-d
-c
Przykład:
$ tr abc xyz
$ tr -d 0123456789
$ tr -cd 0123456789
cut
$ cut <plik>
Przełączniki:
-c <n>-<n>
-f <n>[,<n>]
-d <c>
Przykład:
$ ls -l | cut -d ' ' -f 1,3
$ ls -l | cut -c 2-4
grep
$ grep <wyrażenie regularne> <lista plików>
Przełączniki:
-i # ignoruje wielkość liter
-c # zlicza wystąpienia
-w # dopasowuje wzorzec do całych słów
-l # dopasowuje wzorzec do całych linii
-v # wypisuje linie nie pasujące do wzorca
-q # nic nie wypisuje i zwraca 0 przy pierwszym napotkanym wystąpieniu
Wyrażenia regularne
.^$*?+[]\
- znaki specjalne
.
- reprezentuje dowolny znak
[abc]
- oznacza jeden ze znaków a, b lub c
[a-z]
- oznacza jeden ze znaków z podanego zbioru
[^0-9]
- oznacza dopełnienie podanego zbioru
.*
- oznacza dowolny ciąg znaków
*
- reprezentuje powtórzenie dowolną liczbę razy wyrażenia znajdującego się bezpośrednio po lewej stronie np. A[a]* określa A, Aa, Aaa, Aaaaaaaaa, itd.
+
- reprezentuje powtórzenie jeden lub więcej razy-
?
- reprezentuje powtórzenie zero lub jeden raz
a\{n\}
- oznacza n-krotne wystąpienie znaku występującego bezpośrednio po lewej stronie nawiasów
a\{n, \}
- oznacza co najmniej n-krotne wystąpienie znaku występującego bezpośrednio po lewej stronie nawiasów
a\{, m\}
- oznacza co najwyżej m-krotne wystąpienie znaku występującego po lewej stronie nawiasów
a\{n,m\}
- oznacza co najmniej n-krotne i co najwyżej m-krotne wystąpienie znaku występującego po lewej stronie nawiasów
^
- reprezentuje początek linii
$
- reprezentuje koniec linii
|
- alternatywa
()
- nawiasy
Przykłady:
Ściągamy plik
p4
poleceniem:
$ wget "http://zurowski.faculty.wmi.amu.edu.pl/dydaktyka/zima-2014/SOP/p4"
$ grep est p4
$ grep \. p4
$ grep ps[auy] <<KONIEC
> psami
> psom
> psu
> ps
> KONIEC
$ grep []^-] p4
$ grep [a-zA-Z][a-zA-Z0-9_]* <<KONIEC
> a
> 1B2
> cab24
> KONIEC
-?[0-9]+
^[^.]*\.[^.]*$.
jeden|dwa
([a-z][a-z])*
Ćwiczenia:
- Wyświetl po 5 pierwszych linii wszystkich plików w swoim katalogu domowym w taki sposób, aby nie były wyświetlane ich nazwy.
- Wyświetl linie o numerach 3, 4 i 5 z pliku
/etc/passwd
- Wyświetl linie o numerach 7, 6 i 5 od końca pliku
/etc/passwd
- Wyświetl zawartość
/etc/passwd
w jednej linii
- Za pomocą filtru
tr
wykonaj modyfikację pliku, polegającą na umieszczeniu każdego słowa w osobnej linii.
- Napisać polecenie zliczające sumę znaków z pierwszych trzech linii pliku
/etc/passwd
- Wyświetl listę plików z aktualnego katalogu, zamieniając wszystkie małe litery na duże.
- Wyświetl listę praw dostępu do plików w aktualnym katalogu, ich rozmiar i nazwę
- Wyświetl listę plików w aktualnym katalogu, posortowaną według rozmiaru pliku
- Sporządź statystykę praw dostępu (dla każdego z praw dostępu podaj ile razy zostało ono przydzielone)
- Podaj nazwy trzech najmniejszych plików w katalogu posortowane wg nazwy
- Sprawdź czy któryś z użytkowników jest zalogowany w systemie więcej niż jeden raz. Dla każdego takiego użytkownika należy wyświetlić jego identyfikator i listę terminali na których pracuje.
- Pobierz plik
korpus.txt
poleceniem
wget zurowski.faculty.wmi.amu.edu.pl/dydaktyka/zima-2014/SOP/korpus.txt
dokonaj analizy częstości występowania liter (przykład:)
12 e
5 g
...
(UWAGA: należy użyć polecenia sed -r 's/<wyrażenie regularne>/<napis>/g'
komenda sed
zamienia każde wystąpienie wzorca <wyrażenie regularne>
na napis <napis>
gdzie wzorzec dopasowany do wyrażenia <wyrażenie regularne>
można zapamiętać biorąc go w nawias okrągły (<wyrażenie regularne>)
i cytując w części <napis>
za pomocą wyrażenia \1
)
Inne polecenia
bc
$ bc <plik>
Przełączniki:
-q
-l
Przykład:
Plik wyr
2 + 2 * 2
6 ^ 3
sqrt(4)
$ bc < wyr
cal
[CALendar]
$ cal [<miesiąc> [<rok>]]
Przełączniki:
-j
-y
Przykład:
$ cal
$ cal -j
cal -y
cal 1939
cal september 1939
clear
Przykład:
$ clear