SOP 2006 08


Politechnika Białostocka
Wydział Elektryczny
Katedra Elektrotechniki Teoretycznej i Metrologii
Materiały pomocnicze do zajęć z przedmiotu
SYSTEMY OPERACYJNE
Kod przedmiotu:
F*****
Ćwiczenie pt.
OPERACJE NA PLIKACH TEKSTOWYCH
W SYSTEMIE LINUX: AWK, GREP
Pracownia numer
8
Autor: Jarosław Forenc (2004)
Aktualizacja: Jarosław Forenc (2006)
Białystok 2006
1
1. PROGRAM AWK
awk jest programem przetwarzającym wzorce tekstów i tworzącym
raporty. Posiada on własny język pozwalający na przetwarzanie plików ASCII,
wyszukiwanie występujących w nich pól i fragmentów tekstów, ich
modyfikację, przeprowadzanie na nich obliczeń i formatowanie
wyprowadzonych wyników. awk jest językiem programowania, w którym wiele
konstrukcji zostało zaczerpniętych z języka C. Język awk zawiera zmienne,
tablice, pętle, itp.
Wywołanie awk ma jedną z dwóch postaci:
awk [ Fseparator]  program_awk plik ...
awk [-Fseparator]  f skrypt_awk plik ...
awk przetwarza plik wejściowy lub jeśli nie podano pliku standardowe
wejście, a wynik działania wyprowadza na standardowe wyjście. Polecenia
przetwarzania podawane są w postaci programu napisanego w języku awk.
Program ten mo\e być umieszczony bezpośrednio w linii polecenia
(program_awk) lub umieszczony w pliku i wywołany poprzez -f skrypt_awk.
W pierwszej postaci treść programu umieszcza się w apostrofach. Drugi format
zalecany jest w przypadku bardziej zło\onych programów awk, gdy\ umo\liwia
on wielokrotne u\ywanie i łatwiejszą modyfikację programu. Opcja -F pozwala
określić znak separatora pól u\ywany do dzielenia wiersza pliku wejściowego
na pola. Pominięcie tej opcji oznacza przyjęcie spacji i tabulacji jako znaku
rozdzielającego.
Program w języku awk (program_awk, skrypt_awk) składa się
z opcjonalnej części inicjalizującej, właściwego przetwarzania i opcjonalnego
zakończenia. Struktura pliku z częściami opcjonalnymi wygląda w następujący
sposób:
BEGIN { akcje_początkowe } - opcjonalna część inicjalizująca
[ kryterium_1 ] [ { akcja_1 } ]
[ kryterium_2 ] [ { akcja_2 } ]
...
END { akcje_końcowe } - opcjonalna część zakończenia
Akcje_początkowe wykonywane są przed przetworzeniem pierwszej linii pliku
wejściowego. Akcje_końcowe wykonywane są po przetworzeniu wszystkich
danych wejściowych, zostaną one wykonane tak\e w przypadku, gdy program
zostanie wcześniej zakończony poprzez instrukcję exit. Ogólna postać instrukcji
wygląda następująco (nawiasy klamrowe są częścią składni i muszą
występować):
[ kryterium ] [ { akcja } ]
2
Wykonywanie programu odbywa się w ten sposób, \e awk czyta linię
wejściową i sprawdza czy spełnione jest kryterium_1, tzn. czy wzorzec będący
kryterium_1 odpowiada bie\ącemu wierszowi. Jeśli tak, to wykonywana jest
akcja_1 (sekwencja akcji oddzielonych od siebie średnikiem lub znakiem nowej
linii). Następnie sprawdzane jest kryterium_2, itd. Po przejściu przez wszystkie
kryteria i akcje wczytywana jest następna linia wejścia i cały proces powtarza
się. Jeśli w instrukcji brakuje kryterium, to wszystkie akcje tej instrukcji
wykonywane są dla wszystkich linii wejścia. Jeśli w instrukcji brakuje akcji, to
niezmieniona linia jest wypisywana na wyjściu standardowym. Jeśli natomiast
wykonywana jest akcja, to wiersze nie są automatycznie przesyłane na
standardowe wyjście (trzeba wykorzystać do tego celu polecenie print).
Po wczytaniu linii wejścia jest ona dzielone na pola, którym kolejno
przypisywane są zmienne $1, $2, itd. Zmienna $0 zawiera całą linię. Podział
linii na pola odbywa się na podstawie separatorów pól zapisanych w zmiennej
FS (określonych za pomocą opcji -F). Separatorem domyślnym jest spacja lub
tabulacja. Po podzieleniu wiersza na pola, ka\de pole mo\e być przetwarzane
niezale\nie, np.
$ awk  { print $3 } plik1 - wyświetla trzecie pole wszystkich linii z pliku
plik1.
Jako kryterium mo\e występować:
" wyra\enie regularne w postaci /wzór/
w takim przypadku kryterium jest tekstem lub wzorem tekstu w postaci
/wzór/, np.
$ awk  /napis/ plik1 - wyświetla wszystkie linie z pliku plik1 zawierające
tekst napis, w przykładzie tym nie ma zdefiniowanej
akcji (wykonywana jest domyślna akcja),
" zakres wierszy /wzór_1/,/wzór_2/
zakres ten oznacza wszystkie linie od tej, w której po raz pierwszy wystąpił
wzór_1, a\ do tej, w której wystąpił wzór_2 (łącznie z tą linią), np.
$ awk  /napis1/,/napis2/ plik1 - wyszukuje w pliku plik1 linię zawierającą
napis1, wyświetla wszystkie linie
począwszy od tej, a\ do linii zawierającej
napis2 włącznie, następnie ponownie
poszukuje linii zawierającej tekst napis1,
itd.,
" wyra\enie relacyjne
w takim przypadku rozkazy zawarte w części operacyjnej zostaną wykonane
tylko wtedy, gdy relacja jest spełniona lub wyra\enie zwraca wartość
3
prawda, wyra\enia relacyjne mogą być tworzone w następujący sposób:
wzorzec && wzorzec (and), wzorzec || wzorzec (or), !wzorzec (not), np.
$ awk  $1 ==  tekst  plik1 - sprawdza czy pierwsze pole zawiera napis
tekst, jeśli warunek jest prawdziwy to wiersz
jest wyświetlany,
" połączenie powy\szych mo\liwości
np.
$ awk  /^t1/ && /t2$/ plik1 - wyświetlenie tych linii pliku plik1, które
rozpoczynają się napisem t1 i kończą
napisem t2,
We wzorach mogą występować metaznaki (znaki globalne):
Metaznak Funkcja
. dowolny znak (oprócz nowej linii)
.* dowolny łańcuch (równie\ pusty)
* dowolne powtórzenie
[...] ka\dy znak z ...
[^...] \aden znak z ...
^ na początku linii
$ na końcu linii
\(...\) zgrupowanie
\ maskowanie metaznaku
? powtórzenie 1 raz (lub 0 razy)
+ jednokrotne lub wielokrotne powtórzenia
^wzór na początku linii
wzór$ na końcu linii
a|b a lub b
W polu akcja umieszczane jest jedno lub wiele poleceń, które określają
działanie dla bie\ącego wiersza. Ka\de polecenie w akcji oddzielone jest
średnikiem, znakiem nowej linii lub znakiem prawego nawiasu klamrowego.
Wszystkie polecenia muszą się znalezć między nawiasami klamrowymi.
W programach w języku awk mo\na wykorzystywać:
" stałe
stałe numeryczne są liczbami całkowitymi lub zmiennoprzecinkowymi
(zapis liczb taki sam jak w języku C), stałe tekstowe ujmowane są
w cudzysłów  tekst , sam znak cudzysłowu w stałej tekstowej musi być
maskowany znakiem \, czyli \ ,
4
" zmienne
zmiennych nie deklaruje się, rodzaj zmiennej (numeryczna, znakowa)
zale\ny jest od kontekstu, zmienne nie są poprzedzane znakiem dolara,
występują dwa rodzaje zmiennych: proste i indeksowane (tablice), element
tablicy oznaczany jest poprzez zmienna[indeks], w awk występuje kilka
zmiennych predefiniowanych:
$0 - aktualnie przetwarzana linia wejścia
$i - i-te pole aktualnie przetwarzanej linii wejścia
FILENAME - nazwa bie\ącego pliku wejściowego
FS - separator pól wejściowych (wartością standardową są białe
znaki - spacja, tabulacja), predefiniowanie separatora pól na
inny znak: FS=znak, powrót do ustawień standardowych:
FS= 
NF - liczba pól bie\ącej linii wejściowej po podziale przy u\yciu
separatora FS
NR - numer bie\ącej linii wejściowej
OFMT - format wyjścia dla liczb, standardowo %.g
OFT - separator pól wyjściowych, standardowo jest to spacja
ORS - separator linii wyjściowych, wartością standardową jest
znak końca wiersza
RS - separator linii wejściowych, wartością standardową jest
znak końca wiersza
" wyra\enia
w wyra\eniach mogą występować:
- operatory arytmetyczne: +, -, /, *, % (dzielenie modulo),
- operatory porównania: <, <=, ==, !=, >=, >,
- operatory logiczne: &&, ||, ~ (jest zawarte w), !~ (nie jest zawarte w),
- operatory języka C: ++, --, +=, -=, *=, /=, %=.
Wyra\enie traktowane jest jako wyra\enie numeryczne lub operacja na
łańcuchach znaków w zale\ności od jego elementów. Aby wyra\enie było
traktowane jako wyra\enie numeryczne mo\na dodać do niego zero  +0 .
Aby wyra\enie było interpretowane jako wyra\enie tekstowe, to mo\na
osiągnąć to poprzez jego konkatenację z pustym łańcuchem   .
" instrukcje
u\ycie instrukcji jest takie samo jak w języku C, instrukcje mogą
występować w wyra\eniach, do podstawowych instrukcji nale\ą:
5
if ( warunek ) { instrukcje_1 } [ else { instrukcje_2 } ]
- jeśli warunek jest spełniony wykonywane są instrukcje_1,
w przeciwnym wypadku - instrukcje_2,
while ( warunek ) { instrukcje }
- instrukcje są wykonywane dopóki warunek jest prawdziwy,
for ( wyra\enie; warunek; wyra\enie ) { instrukcje }
- działa tak samo jak pętla for w języku C,
break - przerwij wykonywanie pętli, w której umieszczone jest
polecenie break i wznów działanie od polecenia występującego
za końcem pętli,
continue - rozpocznij wykonywanie następnej iteracji pętli,
{ [ instrukcja ] ... } - wykonaj instrukcję,
print [ lista_wyra\eń ] [ przeadresowanie ]
- drukuj wyra\enia na standardowym wyjściu, wyra\enia
(zmienne) muszą być rozdzielone przecinkami,
printf format [, lista_wyra\eń ] [ przeadresowanie ]
- drukowanie wzorowane na funkcji printf języka C,
zmienna = wyra\enie
- przypisz zmiennej wartość wyra\enia,
next - pomiń sprawdzanie następnych wzorców dla tego wiersza,
exit wyra\enie
- pomiń resztę wierszy pliku wejściowego i przejdz do END jeśli
istnieje
# komentarz - wstawienie tekstu komentarza,
Przeadresowanie mo\e mieć następującą postać: > plik (przeadresowanie),
>> plik (dopisanie), | program (przekazanie przez potok).
" funkcje numeryczne
exp(x) - wartość funkcji exp(x)
int(x) - część całkowita wartości numerycznej
log(x) - wartość funkcji ln(x)
sqrt(x) - pierwiastek kwadratowy
length(x) - liczba znaków (w bajtach) ciągu x
length - długość aktualnej linii $0
atan2(x) - wartość funkcji arctan(x)
cos(x) - wartość funkcji cos(x)
6
rand(x) - liczba losowa z zakresu <0,1>
srand(x) - inicjalizacja generatora liczb losowych dla rand(x)
Przykłady:
$ awk  { if (length < 10) print $0 } plik1 - wypisanie wszystkich linii pliku
plik1 o długości mniejszej od 10
(brak kryterium),
$ awk  BEGIN { N = 0 } - wypisanie ilości linii zawierających napis tekst,
/tekst/ { N = N + 1 }
END { print N } plik1
Załó\my, \e plik osoby zawiera następujące dane:
Jan Kowalski 25 68 173
Adam Nowak 24 80 168
Piotr Kruk 20 72 180
Jacek Niski 23 80 173
Marcin Mrozek 25 75 165
Przy czym poszczególne kolumny oznaczają: imię, nazwisko, wiek, wagę
i wzrost. Po wczytaniu jednego wiersza jest on dzielony na pola, którym
przypisywane są zmienne $1, $2, itd. Zmiennej $0 przypisywana jest cała linia.
W powy\szym przykładzie dla pierwszego wiersza otrzymamy:
$0 Jan Kowalski 25 68 173
$1 Jan
$2 Kowalski
$3 25
$4 68
$5 173
pozostałe predefiniowane zmienne będą miały wartości:
FILENAME osoby
NF 5
NR 1
Cały plik mo\emy wyświetlić poleceniem:
$ awk  { print } osoby
Przy wyświetlaniu pliku mo\emy dodać numerację linii:
$ awk  { print NR, $0 } osoby
1 Jan Kowalski 25 68 173
2 Adam Nowak 24 80 168
3 Piotr Kruk 20 72 180
4 Jacek Niski 23 80 173
5 Marcin Mrozek 25 75 165
7
W prosty sposób mo\na zmienić kolejność kolumn:
$ awk  { print $2, $1, $3, $4, $5 } osoby
Kowalski Jan 25 68 173
Nowak Adam 24 80 168
Kruk Piotr 20 72 180
Niski Jacek 23 80 173
Mrozek Marcin 25 75 165
Mo\emy te\ wybrać linie, których pola spełniają określone warunki, np. waga
powy\ej 75 kg i wzrost powy\ej 170 cm.
$ awk  $4 > 75 && $5 > 170 { print } osoby
Jacek Niski 23 80 173
Do sprawdzenia średniego wzrostu osób znajdujących się na liście napiszemy
skrypt:
BEGIN { I = 0; SUMA = 0 }
{ I++; SUMA = SUMA + $5 }
END { print SUMA / I }
Uruchamiamy skrypt:
$ awk -f skrypt osoby
171,8
2. POLECENIE GREP
Polecenie grep wyszukuje podany wzorzec tekstu w pliku. Składnia
polecenia jest następująca:
grep [opcje] wzorzec [plik ...]
grep [opcje] [-e wzorzec | -f plik] [plik ...]
Polecenie grep przeszukuje wskazane pliki wejściowe (lub standardowe
wejście, jeśli nie podano \adnych plików lub jako nazwę pliku podano znak
minusa), szukając linii zawierających podany wzorzec. Domyślnie polecenie
grep wypisuje nazwy plików i pasujące w nich linie. Polecenie grep mo\e tak\e
pracować jako filtr wyszukujący wzory tekstów w strumieniu wejścia
standardowego. Dodatkowo dostępne są dwa programy wariantowe: egrep (jest
tym samym co grep z opcją -E) i fgrep (jest tym samym co grep z opcją -F).
Jako opcje program przyjmuje m.in.:
-a - przetwarza plik binarny tak, jakby był on tekstowy,
-b - wypisuje przed ka\dą linią wyjścia jej offset bajtowy w pliku wejściowym,
-c - dla ka\dego pliku wejściowego wypisuje tylko liczbę pasujących linii,
8
-e wzorzec - opcja ta stosowana jest gdy wyra\enie rozpoczyna się znakiem
minusa (-). Wyra\enie mo\e być napisane bezpośrednio po -e
lub z poprzedzającą spacją,
-F - interpretuje wzorzec jako listę łańcuchów o stałej długości, oddzielonych
znakami nowej linii, które nale\y dopasować ka\dy z osobna,
-f plik - pobiera wzorce z pliku, po jednym z ka\dej linii,
-H - dla ka\dego dopasowania wypisuje nazwę pliku,
-h - wyłącza poprzedzanie wyników nazwami plików podczas przeszukiwania
wielu plików,
-i - ignoruje rozró\nianie wielkich liter we wzorcu oraz w plikach wejściowych,
-L - wypisuje tylko nazwę ka\dego pliku, z którego normalnie nie wypisano by
\adnego wyjścia,
-l - wypisuje tylko nazwę ka\dego pliku, z którego normalnie wypisano by
wyjście,
-n - przed ka\dą linią, w której znaleziono tekst wyświetla numer linii
z odpowiadającego pliku wejściowego,
-r - czyta wszystkie pliki pod ka\dym katalogiem rekurencyjnie,
-v - odwraca sens dopasowania, wyprowadza tylko linie nie zawierające wzorca
tekstu,
-w - wybiera tylko te linie, w których dopasowania wzorca tworzą całe słowa,
-x - wybiera tylko te dopasowania, które dokładnie pasują do całej linii.
W przypadku stosowania we wzorcu metaznaków: ?, +, {, |, (, ) nale\y
poprzedzać je znakiem ukośnika: \?, \+, \{, \|, \(, \).
Przykłady:
$ grep -c tekst plik1 - wypisuje liczbę linii pliku plik1, w którym występuje
wzorzec tekst,
$ grep -n student /etc/passwd - wyświetla numery linii i linie z pliku passwd
zawierające ciąg student,
$ ps -e | grep gnome - wypisuje wszystkie procesy zawierające w nazwie słowo
gnome.
9
3. OPIS DODATKOWYCH POLECEC DOTYCZCYCH
PLIKÓW TEKSTOWYCH
cmp
porównuje dwa pliki lub zestawy bajtów
Składnia:
cmp [-c][-i ile][-l][-s] plik1 plik2
Opis:
Polecenie to porównuje dwa pliki dowolnego typu i wypisuje wynik na
standardowym wyjściu. Domyślnie cmp nic nie wypisuje, gdy oba pliki są takie
same. Jeśli pliki ró\nią się to wyświetlany jest numer bajtu i numer linii, gdzie
wystąpiła pierwsza ró\nica. Bajty i linie numerowane są od wartości jeden.
Opcje:
-c - wypisuje ró\niące się znaki, znaki sterujące wyświetlane są w postaci ^ plus
litera,
-i ile - ignoruje wszelkie ró\nice w ile początkowych bajtach ka\dego z plików.
Traktuje pliki zawierające mniej ni\ ile bajtów jakby były puste,
-l - dla ka\dej ró\nicy wypisuje numer bajtu (dziesiętnie) i wartości ró\niących
się bajtów (ósemkowo),
-s - nic nie wypisuje zwracając kod zakończenia wskazujący czy pliki ró\nią się.
Przykłady:
$ cmp plik1 plik2 - porównuje pliki o nazwach plik1 i plik2
plik1 plik2 differ: byte 8, line 1 wyświetlając numer bajtu i numer linii,
w której wystąpiła pierwsza ró\nica.
diff
wyszukuje i zaznacza ró\nice pomiędzy dwoma plikami
Składnia:
diff [opcje] plik1 plik2
Opis:
Polecenie to porównuje oba podane pliki i wyświetla na wyjściu standardowym
informację, które linie muszą zostać zmienione aby z plik1 otrzymać plik2.
Wyjście ma następujący format:
n1 a n3, n4 - dla linii, które nale\y dołączyć,
n1, n2 d n3 - dla linii, które nale\y usunąć,
n1, n2 c n3, n4 - dla linii, które nale\y wymienić.
10
Jeśli jako nazwę pliku podamy minus (-), to tekst odczytywany jest ze
standardowego wejścia. Jeśli plik1 jest katalogiem, a plik2 nie, to diff porównuje
plik z katalogu plik1, którego nazwa jest taka sama jak plik2, i odwrotnie. Jeśli
plik1 i plik2 są katalogami, to diff porównuje odpowiednie pliki w obu
katalogach, w kolejności alfabetycznej.
Opcje:
-i - ignorowanie zmian w wielkości liter - du\e i małe litery uznawane są za
równowa\ne,
-w - ignorowanie wszystkich odstępów przy porównywaniu plików,
-b - ignorowanie zmian w ilości odstępów,
-B - ignorowanie zmian, które dodają lub usuwają puste linie,
-q - poinformowanie jedynie czy pliki się ró\nią bez podawania szczegółów na
temat ró\nic,
-e - stworzenie wyjścia, które jest poprawnym skryptem programu ed,
-r - rekurencyjne porównywanie wszystkich podkatalogów, jeśli porównywane
są katalogi,
-s - poinformowanie jeśli oba pliki są identyczne.
Przykłady:
$ diff -q plik1 plik2 - porównuje pliki o nazwach plik1 i plik2
Files plik1 and plik2 differ wyświetlając informację, czy pliki ró\nią się.
find
wyszukuje pliki o podanych atrybutach
Składnia:
find [katalog ...][wyra\enie]
Opis:
Polecenie to przeszukuje rekurencyjnie podane katalogi szukając plików
spełniających kryteria podane przez wyra\enie. Jeśli nie podano katalogów
u\ywany jest katalog bie\ący. Jeśli nie podano wyra\enia, u\ywane jest
wyra\enie -print.
Opcje:
-name nazwa_pliku - poszukuje wyspecyfikowanych plików, w nazwie pliku
mo\na stosować znaki globalne,
-print - podaje ście\kę dostępu do znalezionych plików,
-perm prawa - poszukuje plików z podanymi (w formacie liczby ósemkowej)
prawami dostępu do pliku,
11
-type x - plik ma być typu x: c - pliki specjalne znakowe, b - pliki specjalne
blokowe, d - katalogi, f - zwykłe pliki, p - bufor typu FIFO,
-links n - do pliku istnieje n dowiązań,
-user name - plik nale\y do właściciela name (mo\na podać tak\e UID),
-group name - plik nale\y do grupy name (mo\na podać tak\e GID),
-size n - plik ma być o wielkości n bloków (po 512 bajtów w bloku),
-atime n - plik był u\ywany w ciągu ostatnich n dni,
-ctime n - plik był zało\ony w ciągu ostatnich n dni,
-mtime n - plik był modyfikowany w ciągu ostatnich n dni,
-newer plik1 - plik był pózniej modyfikowany ni\ plik1,
-exec polecenie - podane polecenie będzie zastosowane do plików,
spełniających warunek poszukiwania. W poleceniu klamry {}
są zastępowane aktualną ście\ką dostępu,
-ok polecenie - działa jak -exec, ale wyprowadza na standardowe wyjście pełną
nazwę polecenia, które ma być wykonane i wykonuje je dopiero
po potwierdzeniu literą y.
Jeśli w warunkach poszukiwań podawana jest liczba n, to oznacza ona:
n - liczba całkowita n, +n - liczba większa od n, -n - liczba mniejsza od n.
Przykłady:
$ find /home/student -ctime -2 - wyszukuje w podanym katalogu pliki, które
zostały utworzone w ciągu ostatnich dwóch
dni,
$ find /home/student -perm 777 - wyszukuje w podanym katalogu pliki, które
mają nadane wszystkie prawa dostępu,
$ find /home/student -ctime 0 -type d - wyszukuje w podanym katalogu
katalogi utworzone w ciągu ostatniego
dnia.
head
wyświetla kilka pierwszych linii pliku
Składnia:
head opcje plik ...
Opis:
Polecenie to wyświetla dla kolejnych podanych plików ich nazwy i pierwsze
(domyślnie 10) linie ich treści. Jeśli nie podane zostały nazwy plików, to head
czyta ze standardowego wejścia. Polecenie head akceptuje dwa formaty opcji:
nowy, w którym liczby są argumentami opcji literowych (np. -n 1) i stary,
w którym liczby poprzedzają jakiekolwiek opcje literowe (np. -1b).
12
Opcje:
-c N - wypisuje pierwsze N bajtów pliku. N jest liczbą naturalną, po której
opcjonalnie mo\e wystąpić inny znak określający inną jednostkę: b - bloki
512-bajtowe, k - bloki kilobajtowe, m - bloki megabajtowe,
-l, -n N - wypisuje pierwsze N linii, -l jest rozpoznawane tylko z u\yciem
starego formatu opcji,
-Nopcje - opcja taka rozpoznawalna jest tylko jeśli jest podana jako pierwsza.
N jest liczbą dziesiętną, po której opcjonalnie występuje litera
rozmiaru (b, k, m) lub litera l oznaczająca zliczanie linii. Bez podania
opcji tak\e zliczane są linie.
Przykłady:
$ head -5 plik1 - wyświetla 5 początkowych linii pliku plik1,
$ head -5l plik1 - wyświetla 5 początkowych linii pliku plik1 (stary format),
$ head -n 5 plik1 - wyświetla 5 początkowych linii pliku plik1 (nowy format).
more
umo\liwia przeglądanie plików stronami
Składnia:
more opcje [-n] [+n] [+/wzór] [plik ...]
Opis:
More jest filtrem słu\ącym do przeglądania tekstu strona po stronie.
Wyprowadza pliki na ekran w stronach o odpowiedniej dla niego długości.
Długość strony mo\e być zmieniona. Po wyprowadzeniu pierwszej strony tekstu
naciśnięcie Enter spowoduje wyprowadzenie kolejnej linii, a naciśnięcie Spacji -
kolejnej strony.
Opcje linii komend:
-n - zmiana długości wyprowadzanej strony na n-wierszy,
+n - rozpoczęcie wyprowadzania od linii o numerze n,
+/wzór - określa łańcuch znaków (wzór), który nale\y odszukać i rozpocząć
wyprowadzanie o dwie linie wcześniej ni\ linia, w której występuje
wzór,
-c - zapobiega przesuwaniu w górę pierwszej strony przy wyprowadzaniu
kolejnych, co ułatwia czytanie,
-f - obcina zamiast  łamać długie linie,
-l - ignoruje przy wyświetlaniu znak nowej strony,
-s - scala wiele następujących po sobie spacji (lub pustych linii) i wyprowadza
jako jedną.
13
Po wyprowadzeniu strony przez more u\ytkownik mo\e wpływać na
wyświetlanie dalszej części pliku za pomocą komend:
h lub ? - help, opis działania polecenia more,
Spacja - wyprowadzenie następnej strony tekstu,
Enter - wyprowadzenie następnej linii tekstu,
q lub Q - opuszczenie more,
n Spacja - wyprowadzenie następnych n linii tekstu,
d lub Ctrl+d - wyprowadzenie następnych 11 linii tekstu,
nz - wyprowadzenie nowej strony z nową długością strony równą od tego
momentu n,
ns - przeskocz n linii tekstu w przód (domyślnie jedną),
nf - przeskocz n ekranów tekstu w przód (domyślnie jeden),
nb - przeskocz n linii tekstu w tył (domyślnie jeden).
Przykłady:
$ more +/tekst plik1 - wyświetla zawartość pliku plik1 rozpoczynając
wyświetlanie dwie linie wcześniej ni\ linia zawierająca
słowo tekst,
$ ls -l | more - wyświetla listę plików z bie\ącego katalogu z podziałem na
strony (zastosowanie more jako filtr).
sort
sortuje i łączy pliki tekstowe
Składnia:
sort opcje [+poz1 [-poz2]] [-k poz1[,poz2]][-o plik_wyj] plik
Opis:
Polecenie to sortuje linie wyspecyfikowanych plików i zapisuje wynik na
wyjściu standardowym. Wywołane bez nazw plików, lub gdy zamiast nazw
plików zostanie podany znak minus (-), będzie czytało ze standardowego
wejścia, tzn. pracować jako filtr. Bez dodatkowych opcji sortowanie odbywa się
w porządku leksykograficznym. Polecenie sort ma trzy tryby działania:
- sortowanie (domyślny),
- zlepianie (wymaga wywołania z opcją -m), sort zlepia podane pliki sortując
je jako grupę. Ka\dy plik wejściowy powinien ju\ być posortowany,
- sprawdzanie posortowania (wymaga wywołania z opcją -c), sort sprawdza,
czy podane pliki są ju\ posortowane, jeśli nie wszystkie są posortowane, to
wypisuje komunikat o błędzie i kończy pracę z kodem równym 1.
14
Para linii porównywana jest w następujący sposób: jeśli podano jakieś pola
kluczowe, to sort porównuje ka\dą parę pól w porządku podanym w linii
komend, według skojarzonych opcji porządkowania, a\ znaleziona zostanie
ró\nica albo przeszukane zostaną wszystkie pola. Jeśli u\yto którejś z opcji
globalnych, ale nie podano słów kluczowych, sort porównuje całe linie według
opcji globalnych.
Opcje do zmiany porządku sortowania:
-b - ignoruje początkowe znaki spacji i tabulacji,
-d - porównuje tylko litery, cyfry i znaki puste,
-f - nie uwzględnia wielkości liter (podstawia znaki małych liter za odpowiednie
znaki du\ych liter),
-g - sortuje numerycznie przekształcając przedrostek ka\dej linii na liczbę
zmiennoprzecinkową podwójnej precyzji,
-i - ignoruje znaki niedrukowalne podczas sortowania (spoza zakresu ASCII
0408 - 1768) ,
-n - sortowanie numeryczne wartości występujących na początku linii,
-r - zmienia porządek sortowania na malejący.
Inne opcje:
-o plik_wyj - wypisuje wynik do plik_wyj, a nie na standardowe wyjście,
+poz1 [-poz2] - określa pole w ka\dej linii, którego nale\y u\yć jako klucza
sortowania, pole to składa się z części linii zaczynającej się na
poz1 a\ do poz2 (bez poz2) lub do końca linii jeśli nie podano
poz2. Pola i pozycje znaków numerowane są od 0,
-k poz1[,poz2] - j.w. w nowej wersji, pole jest częścią linii pomiędzy poz1
i poz2 włącznie. Pola i pozycje znaków numerowane są od 1.
Przykłady:
$ sort -c plik1 - sprawdza czy podany plik jest
sort: plik1: 2: disorder: tekst w pliku posortowany, jeśli nie jest, to
wyświetla informację o pierwszej
linii, która jest nieposortowana.
$ ls | sort -r - wyświetla listę plików z bie\ącego katalogu sortując w odwrotnej
kolejności (zastosowanie sort jako filtr).
15
tail
wyświetla kilka ostatnich linii pliku
Składnia:
tail opcje plik ...
Opis:
Polecenie to wyświetla dla kolejnych podanych plików ich nazwy i ostatnie
(domyślnie 10) linie ich treści. Jeśli nie podane zostały nazwy plików, to tail
czyta ze standardowego wejścia. Polecenie tail akceptuje dwa formaty opcji:
nowy, w którym liczby są argumentami opcji literowych (np. -n 1) i stary,
w którym +, -, i opcjonalnie liczby poprzedzają jakiekolwiek opcje literowe
(np. -1 lub +1). Jeśli liczba N rozpoczyna się od znaku +, to tail zaczyna
wypisywanie od N-tego elementu od początku ka\dego pliku, a nie od końca.
Opcje:
-c N - wypisuje końcowe N bajtów. N to liczba naturalna, po której opcjonalnie
następuje znak określający inną jednostkę: b - bloki 512-bajtowe,
k - bloki kilobajtowe, m - bloki megabajtowe,
-l, -n N - wypisuje ostatnie N linii, -l jest rozpoznawane tylko z u\yciem starego
formatu opcji,
-Nopcje, +Nopcje - opcja taka rozpoznawalna jest tylko jeśli jest podana jako
pierwsza. N jest liczbą dziesiętną, po której opcjonalnie
występuje litera rozmiaru (b, k, m) lub litera l oznaczająca
zliczanie linii. Bez podania opcji tak\e zliczane są linie.
Przykłady:
$ tail -5 plik1 - wyświetla 5 ostatnich linii pliku plik1,
$ tail +5 plik1 - wyświetla zawartość pliku plik1 począwszy od 5 linii.
wc
wyświetla liczbę linii, słów i bajtów w pliku
Składnia:
wc opcje plik ...
Opis:
Polecenie to podaje liczbę linii, słów i bajtów w pliku podanym jako argument
(lub w tekście podanym z wejścia standardowego). Słowa oddzielone są od
siebie białymi znakami. Liczba linii jest to liczba znaków końca wiersza.
W przypadku braku opcji dla ka\dego pliku wypisywana jest jedna linia
zawierająca: liczbę linii, liczbę słów, liczbę bajtów i nazwę pliku. Jeśli podano
16
więcej ni\ jedną nazwę pliku to polecenie wc wypisuje linię końcową
zawierającą łączne liczby z nazwą pliku total (lub razem).
Opcje:
-c - wypisuje tylko liczbę bajtów,
-w - wypisuje tylko liczbę słów,
-l - wypisuje tylko liczbę linii,
-L - wypisuje tylko długość najdłu\szej linii.
Przykłady:
wc plik1 plik2
2 7 26 plik1
3 7 30 plik2
5 14 56 razem
LITERATURA:
[1] Taylor D.: 101 skryptów w shellu, Mikom, Warszawa, 2004.
[2] Lal K., Rak T.: Linux. Komendy i polecenia. Praktyczne przykłady,
Helion, Gliwice, 2005.
[3] Robbins A., Beebe N.H.F.: Programowanie skryptów powłoki, Helion,
Gliwice, 2005.
[4] Newham C., Rosenblatt B.: bash. Wprowadzenie, Helion, Gliwice, 2006.
[5] Robak S.: XENIX. Wielodostępny, wieloprogramowy system operacyjny
(Unix System V), Zielona Góra, 1991.
[6] Ray D.S., Ray E.J.: Po prostu Unix, Helion, Gliwice 2000.
[7] Marczyński J.: UNIX: u\ytkowanie i administrowanie, Helion, Gliwice
2000.
[8] Armstrong J., Taylor D.: Unix dla ka\dego, Helion, Gliwice 2000.
[9] Ball B., Pitts D.: Red Hat Linux 6. Księga Eksperta, Helion, Gliwice 2000.
[10] Medinets D.: Unix: narzędzia programowania powłok, Wydawnictwo
PLJ, Warszawa 2000.
[11] Goodheart B., Cox J.: Sekrety magicznego ogrodu: Unix System V wersja
4 od środka: podręcznik, WNT, Warszawa 2001.
[12] Arthur L.J., Burns T.: Unix. Programowanie w shellu, Mikom, Warszawa
1998.
[13] Nemeth E., Snyder G., Seebass S., Hein T.R.: Przewodnik administratora
systemu Unix, WNT, Warszawa 1998.
17
Wymagania BHP
Warunkiem przystąpienia do praktycznej realizacji ćwiczenia jest
zapoznanie się z instrukcją BHP i instrukcją przeciw po\arową oraz
przestrzeganie zasad w nich zawartych. Wybrane urządzenia dostępne na
stanowisku laboratoryjnym mogą posiadać instrukcje stanowiskowe. Przed
rozpoczęciem pracy nale\y zapoznać się z instrukcjami stanowiskowymi
wskazanymi przez prowadzącego.
W trakcie zajęć laboratoryjnych nale\y przestrzegać następujących zasad:
f& Sprawdzić, czy urządzenia dostępne na stanowisku laboratoryjnym są
w stanie kompletnym, nie wskazującym na fizyczne uszkodzenie.
Sprawdzić prawidłowość połączeń urządzeń peryferyjnych.
f& Je\eli istnieje taka mo\liwość, nale\y dostosować warunki stanowiska do
własnych potrzeb, ze względu na ergonomię. Monitor komputera ustawić
w sposób zapewniający stałą i wygodną obserwację dla wszystkich
członków zespołu.
f& Załączenie komputera mo\e się odbywać po wyra\eniu zgody przez
prowadzącego.
f& Zabronione jest dokonywanie jakichkolwiek przełączeń w urządzeniach
oraz wymiana elementów składowych pod napięciem.
f& Konfiguracja sprzętu (np. konfiguracja systemu operacyjnego, ustawienie
parametrów monitora) mo\e się odbywać wyłącznie w porozumieniu
z prowadzącym zajęcia.
f& W trakcie pracy z komputerem zabronione jest spo\ywanie posiłków
i picie napojów.
f& W przypadku zaniku napięcia zasilającego nale\y niezwłocznie wyłączyć
komputer i monitor z sieci elektrycznej.
f& Stwierdzone wszelkie braki w wyposa\eniu stanowiska oraz
nieprawidłowości w funkcjonowaniu sprzętu nale\y przekazywać
prowadzącemu zajęcia.
f& W przypadku zakończenia pracy nale\y zakończyć sesję przez wydanie
polecenia wylogowania. Zamknięcie systemu operacyjnego mo\e się
odbywać tylko na wyrazne polecenie prowadzącego.
18


Wyszukiwarka

Podobne podstrony:
2006 08 Google Gobble
2006 08 Zarządzanie pamięcią w systemach operacyjnych [Inzynieria Oprogramowania]
2006 08 the Sequel Stored Procedures, Triggers, and Views in Mysql 5
2006 08 A New Leaf
2006 08 Kernel Business Rebuilding the Kernel for Non Experts
Shimano Alfine Test 2006 08
Spadamy z bezrobociem 25 08 2006
1 Opinia PKPP Lewiatan dotycąca godzin nadliczbowych 24 08 2006
us iraq intsum 2006 06 08
2006 03 08
2006 01 08

więcej podobnych podstron