Program awk, zmienne i arytmetyka¶
Zmienne i prosta arytmetyka¶
Powłoka systemu Linux umożliwia również deklarowanie zmiennych, które pełnią istotną rolę w kontrolowaniu działania powłoki. Zmienne środowiskowe kontrolują m.in. kolorowanie listy plików, które drukuje na ekran polecenie ls albo ścieżkę do uruchamianych programów. Każdy użytkownik może mieć inne ustawienia. Sprawdzić je można poleceniem env.
Każda sesja powłoki, czyli okres od zalogowania się do wylogowania (zamknięcia terminala) jest niezależna. Zmienne zadeklarowane w jednym terminalu nie istnieją w drugim. Istnieje jednak plik konfiguracyjny (np. .bashrc dla powłoki bash), który jest ładowany na początku sesji. Wpisane tam ustawienia są dostępne w każdym otwartym terminalu. Aby zmiany w pliku .bashrc były widoczne, po jedgo nagraniu trzeba się wylogować i zalogować ponownie, otworzyć nowy terminal, lub załadować ten plik ponownie komendą source ~/.bashrc.
Zmienne w powłoce wykorzystujemy też do pisania programów - służą do przechowywania wartości.
Zawartość zmiennej wydrukować możemy poleceniem echo:
echo $LOGNAME
Uwaga
Nazwy zmiennych są case sensitive: Zmienna, ZMIENNA i zmienna to trzy różne zmienne.
Zmienne deklarujemy przez nadanie im wartości; podczas użycia zmiennej musimy jej nazwę poprzedzić znakiem $:
zmienna="Ala"
ZMIENNA="ma kota"
WYNIK=$zmienna" "$ZMIENNA
echo $WYNIK
Przeanalizuj powyższy przykład. Zauważ, że:
między nazwą zmiennej, znakiem
=a nadawaną wartością nie może być spacjiinicjując zmienne nie dodajemy znaku
$wykorzystując już istniejące zmienne zawsze dodajemy
$zmienne z założenia są napisami
sklejanie napisów polega na połączeniu ich w jeden ciąg
Prosta arytmetyka w bash’u¶
Obliczenia w terminalu można zrealizować na różne sposoby:
korzystając z poleceń
declarealboletza pomocą wyrażeń w podwójnych nawiasach
wykorzystując program
exprwykorzystując program
bc
Podejścia wymienione w punktach (1), (2) i (3) umożliwiają jedynie operowanie na liczbach całkowitych. Tu omówię tylko podejście (2). W kolejnej zaś części znajdziesz wprowadzenie do programu awk, który umożliwia operowanie na liczbach rzeczywistych.
Działanie na zmiennych przeprowadzamy w podwójnych nawiasach, np tu: x=$((a+5)) tworzymy nową zmienną dodając do już istniejącej zmiennej a liczbę 5. Zwróć uwagę na składnię! To chyba jedyny wyjątek, kiedy odwołujemy się do istniejącej zmiennej bez znaku $. Znak $ przed nawiasami jest za to wymaganym elementem składni. Wynik działania drukujemy komendą echo $x.
Program awk¶
Program awk to temat-rzeka. Na potrzeby tego wykładu przedstawię tylko te najpotrzebniejsze nam dopływy.
Polecenie awk wczytuje dane tekstowe, przetwarza je, i drukuje wyniki. Operacje mogą być wykonywane dla bierzącej linii bądź zbiorczo. Umożliwia on takie operacje jak:
policzenie sumy lub średniej z liczb z danej kolumny
wycięcie kolumny z pliku
wydrukownie wierszy spełniających określone warunki
Argumentem komendy awk jest skrypt z zapisem tego, co awk ma robić dla każdej linii oraz nazwy plików wejściowych. Ów skrypt może składać się z 3 sekcji, na przykład:
awk 'BEGIN{s=0} {s+=$1} END{print s}' dane.txt
Przykład ten oblicza sumę liczb z pierwszej kolumny z pliku dane.txt. Sekcje BEGIN i END nie są obowiązkowe - używamy ich tylko wtedy, kiedy ich naprawdę potrzebujemy. W tym przykładzie BEGIN{s=0} jest poprawne nie nie konieczne, gdyż awk domyślnie inicjalizuje wszystkie zmienne wartością 0.0.
Ćwiczenie 1: Średnia i odchylenie standardowe
Zmodyfikuj powyższy przykład tak, aby liczył średnią oraz odchylenie standardowe z kolumny danych