powrót
Ćwiczenia 3
tee
$ tee <plik1>
Przełączniki:
-a
tac
$ tac <plik>
Przetwarzanie potokowe
|
Przykład:
$ ls -l /home/students/ | lessFiltry
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