MATERIAAY DO ĆWICZEC LABORATORYJNYCH
(5)
sort sortowanie zawartości plików tekstowych według określonych kryteriów
Zadanie:
W dowolny sposób utworzyć plik o nazwie lista zawierający listę nazwisk i imion w
osobnych wierszach, bez uporządkowania alfabetycznego (ok. 10 nazwisk)
np.: Kowalski Roman
Nowak Piotr itd.
cd Sortowanie listy nazwisk. Domyślnym kryterium
cat lista jest porządek alfabetyczny. Plik sortowany nie
sort lista ulega zmianie.
sort lista > lst W pliku lst znajdzie się lista posortowana
cat lista | sort Inny sposób sortowania z wykorzystaniem
mechanizmu przetwarzania potokowego
cat > liczby Utworzenie przykładowego pliku zawierającego
3 liczby
30
123
2152
Ctrl+D
Taki wynik sortowania wynika
sort liczby
123
stąd, że poszczególne liczby
2152
traktowane są jako ciągi znaków
3
sortowanie alfabetyczne. Pod
30
uwagę brana jest kolejność znaków
zdefiniowana w tablicy znaków
ASCII.
Teraz ciągi znaków traktowane są
3
sort n liczby
jak liczby i otrzymujemy
30
posortowane liczby zgodnie z ich
123
rosnącymi wartościami
2152
sort r lista Sortowanie w porządku odwrotnym
sort nr liczby Sortowanie numeryczne w porządku
odwrotnym (wg malejących wartości)
cat > pierwiastki
Kobalt Na wynik sortowania wpływa
rad
astat kolejność znaków w kodzie
astat
rad ASCII. Duże litery znajdują się
Kobalt
przed literami małymi
Ctrl+D
sort pierwiastki
sort f pierwiastki astat
Parametr f powoduje, że małe
Kobalt
litery traktowane są tak jak duże
rad
sort lista lst Jeśli argumentem polecenia sort jest lista plików,
to polecenie je sklei razem i posortuje tworząc
nową listę.
Pary identycznych wierszy są efektem tego, że
pliki lista i lst są jednakowe
sort u lista lst Parametr u pozwala usunąć powtarzające się
wiersze
who | sort Polecenie who podaje listę użytkowników
aktualnie pracujących na stacji. Za pomocą
polecenia sort uzyskamy tę listę uporządkowaną
Polecenie sort umożliwia sortowanie wierszy pliku biorąc pod uwagę znaki występujące
niekoniecznie na początku każdego wiersza. Wiersze pliku sortowanego mogą zawierać wiele
pól (np. słów, liczb), które mogą być oddzielone znakami spacji lub tabulacji (tzw. znakami
białymi), ale mogą być też rozdzielone innymi znakami (separatorami) np. przecinek, średnik,
dwukropek.
Domyślnymi separatorami pól dla polecenia sort są znaki białe. Inne separatory mogą być
określone za pomocą opcji -t . Gdy dwa lub więcej białych znaków oddziela sąsiadujące
pola, to pierwszy z nich traktowany jest jako separator, a pozostałe należą do drugiego z tych
pól.
Wiersz
asterŹŹŹdaliaŹliliaŹŹŹŹpiwonia
I pole II pole III pole IV pole
separatory
Pozycję znaków, które będą brane pod uwagę przy sortowaniu, określa się podając numer
pola p lub numer pola i numer znaku w tym polu p.z (numerowanie od 0).Można określić
pozycję początkową i końcową znaków w wierszu, które będą brane pod uwagę przy
sortowaniu (tzw. klucz sortowania). Kluczy sortowania można podać kilka.
sort +1 lista Parametr +1 (jeden) oznacza ominięcie jednego
pola w każdym wierszu, czyli sortowanie pliku wg
znaków w drugiej kolumnie. Na wynik sortowania
mają wpływ jednak spacje, które występują na
początku każdego II pola.
sort b +1 lista Parametr -b spowoduje ignorowanie spacji i
tabulacji na początku pól sortowania. Teraz więc
uzyskamy listę posortowaną wg imion.
ls l /var Przy sortowaniu brane są pod uwagę znaki
począwszy od 3 kolumny, czyli nazwy
ls l /var | sort b +2
użytkowników.
ls l ~/.. | sort b +3 4 Sortowanie dotyczy wszystkich znaków
znajdujących się w kolumnie czwartej (+3) lecz
nie znajdujących się w kolumnie piątej (-4). Klucz
sortowania obejmuje więc tylko czwartą kolumnę,
czyli lista plików zostanie posortowana wg nazw
grup.
df k | sort +0.5 0.8 Sortowanie wg znaków od 6-go do 8-go w
pierwszej kolumnie (nr pola = 0).
cat /etc/passwd Plik /etc/passwd zawiera informacje o
użytkownikach systemu. Dwukropek jest w nim
separatorem pól.
sort t: +3n 4 +2n 3 /etc/passwd Opcja t określa znak separatora pól, który w tym
przypadku dwukropkiem.
Czwarte pole (określone przez +3 4) jest
numerem grupy, zaś pole trzecie (określone przez
+2 3) jest numerem użytkownika. Polecenie to
sortuje więc plik (n numerycznie) najpierw wg
numeru grupy. Linie z takim samym numerem
grupy są następnie sortowane wg numerów
użytkownika.
Polecenie cut umożliwia wycięcie wybranych kolumn z pliku tekstowego. Parametr
-clista - określa pozycje znakowe wycinanych fragmentów wierszy
-flista - określa numery wycinanych pól wierszy
-dznak - określa separator pól
cut f1 lista Użyto opcji f1 (po literze f następuje cyfra 1).
Domyślnym separatorem pól dla programu cut
jest znak tabulacji. Jeśli więc w pliku lista
nazwiska oddzielone są od imion znakiem
tabulacji, to polecenie wyświetli listę nazwisk
(tylko 1 pole z każdego wiersza).
Jeśli w pliku lista nazwiska oddzielone są od
imion znakiem spacji, to wtedy dla programu,
każdy wiersz zawiera tylko jedno pole i w
konsekwencji polecenie wyświetli listę nazwisk z
imionami.
Za pomocą opcji d zmieniono separator pól na
cut d Ź f1 lista
spację. Teraz polecenie cut wyświetli tylko
nazwiska.
Polecenie wyświetli tylko nazwy użytkowników.
who | cut d Ź f1
Podanie separatora za pomocą parametru d było
konieczne, ponieważ pola w wyświetlonej
informacji oddzielone są spacjami, a nie znakami
tabulacji.
date Wyświetlenie fragmentu tekstu pomiędzy 12-ym i
19-ym znakiem tj. tylko godziny
date | cut c12-19
ls l | cut c16-23 | sort Wyświetlenie posortowanej listy właścicieli
plików
cut d: -f1,5 /etc/passwd Wyświetlenie 1-go i 5-go pola z każdego wiersza
pliku /etc/passwd tzn. użytkowników i ich
krótkiego opisu. Pola oddzielone są w tym pliku
dwukropkami.
cut d: -f1,5 /etc/passwd | grep -w .[1-4] Odfiltrowanie tylko informacji
dotyczących użytkowników, których
dwuliterowe nazwy kończą się na cyfrę z
przedziału 1-4.
Polecenie (filtr) wc zlicza znaki, słowa i linie w podanych plikach
" opcja l powoduje zliczanie tylko linii
" opcja w powoduje zliczanie tylko słów
" opcja c powoduje zliczanie tylko znaków
ls | wc -l Polecenie podaje liczbę plików i podkatalogów
w bieżącym katalogu.
ls -l | grep ^- | wc -l Polecenie podaje liczbę plików zwykłych
w bieżącym katalogu.
Przeanalizujemy polecenie, które zlicza użytkowników aktualnie korzystających z systemu:
who | cut -f1 -d | sort | uniq | wc -l
who polecenie who wyświetla informacje o
otwartych sesjach przy terminalach
w systemie.
who | cut -f1 -d filtr cut powoduje wyświetlenie tylko
pierwszej kolumny danych z polecenia who,
czyli tylko nazwy użytkowników
who | cut -f1 -d | sort polecenie sort posortuje uzyskaną listę
użytkowników
who | cut -f1 -d | sort | uniq polecenie uniq usuwa powtarzające się
nazwy
who | cut -f1 -d | sort | uniq | wc -l wreszcie, polecenie wc zlicza tak uzyskane
nazwy. W wyniku uzyskamy liczbę
użytkowników aktualnie zalogowanych na
stacji
wc -c historia.txt polecenie wc podaje liczbę znaków (czyli
bajtów) zawartych w pliku historia.txt. W
efekcie dostaniemy rozmiar pliku w bajtach,
czyli to, co pokaże również polecenie:
ls -l historia.txt
polecenie wc poda 3 liczby: 1) liczbę
wc historia.txt
wierszy, 2) liczbę słów, 3) liczbę znaków
zawartych w pliku historia.txt.
Wyszukiwarka
Podobne podstrony:
Unix lab 9Unix lab 7Unix lab 10Unix lab 3Unix lab 4Unix lab 1Unix lab 8Lab UNIX files and directories managementLab Wprowadzenie do systemu UNIXLab Introductin to UNIX SystemLab Wprowadzenie do systemu UNIXLab cpplab 2T2 Skrypt do lab OU Rozdział 6 Wiercenie 3IE RS lab 9 overviewlab pkm 3lab chemia korozjalab tsp 3więcej podobnych podstron