AWK - Tutorial
..:: Menu ::..
 :: Wprowadzenie
 :: Zaczynamy
 :: Formatowane wyjście
 :: Wyrażenia regularne
 :: Wbudowane zmienne
 :: Operatory i funkcje
 :: Instrukcje sterujące
 :: Tablice
 
 :: Przykłady
 :: Linki

Darmowe konta, domeny: of.pl
..:: Operatory i funkcje ::..

 

   W "awk" są dostepne operatory arytmetyczne:

  +    dodawanie
  -    odejmowanie
  *    mnożenie
  /    dzielenie
  ++   inkremenracja
  --   dekrementacja
  %    dzielenie modulo
  ^    potęgowanie
  +=    dodawanie z podstawieniem
  -=    odejmowanie z podstawieniem
  *=    mnożenie z podstawieniem
  /=    dzielenie z podstawieniem
  %=    dzielenie modulo z podstawieniem
  ^=    potęgowane z podstawieniem

Przykłady:

  sum = sum + 3   #lub sum += 3  
  sum = x / y
  n++             #lub n = n + 1

Przykład "mojawk29":

#mojawk29, program awk
#wyświetlajacy średnią ilość pamieci w komputerach PC (XT-486)
/(XT|286|386|486)/ { komputery++; pamiec += $2 }
END { avgmem = pamiec / komputery;
  printf("Srednia pamiec w komputerach PC = %.2f \n", avgmem )
  }

Ekran:

>awk -f mojawk29 awktekst
  Srednia pamiec w komputerach PC = 4480.00

   "awk" posiada również wbudowane funkcje arytmetyczne:

  sqrt(x)      pierwiastek kwadratowy z x
  sin(x)       sinus x, x podajemy w radianach
  cos(x)       kosinus x, x podajemy w radianach
  atan2(y,x)   arkustangens y/x w radianach
  exp(x)       eksponenta
  int(x)       część całkowita z x
  log(x)       logarytm naturalny

Przykład "mojawk30":

#mojawk30, program awk
#obliczający pierwiastek kwadratowy
#liczby są wpisywane z klawiatury
#Ctrl+D zakończenie obliczeń
{ print sqrt( $1 ) }

Ekran:

>awk -f mojawk30
  1
  1
  2
  1.41421
  3
  1.73205

   Do modyfikacji napisów w "awk" możemy użyć funkcji:

index(gdzie, co) Zwraca pozycję napisu "co" w łańcuchu "gdzie", 0 jeśli nie znajdzie

length([łańcuch]) Podaje liczbę znaków w "łańcuch".

split(łańcuch, tablica [, sep-pól]) Dzieli łańcuch na kawałki rozdzielane przez "sep-pól" i zapamiętuje je w tablicy.

sprintf(format, wyrażenie1,...) Zwraca (bez wypisywania) łańcuch jaki wypisałaby instrukcja "printf" z tymi samymi argumentami

tolower(łańcuch) Zwraca kopię łańcucha, w której wszystkie duże litery zamieniono na odpowiadające im małe litery.

toupper(łańcuch) Zwraca kopię łańcucha, w której wszystkie małe litery zamieniono na odpowiadające im duże litery.

substr(łańcuch, start [, długość]) Zwraca "długość" - znakowy podłańcuch "łańcuch", poczynając od znaku numer "start".

sub(regexp, zastąpienie [, cel]) Funkcja sub zmienia wartość "celu".

gsub(regexp, zastąpienie [, cel]) Podobna do funkcji "sub". Litera 'g' w gsub znaczy "globalnie", czyli zastępowanie wszędzie.

Przykład "mojawk31":

#mojawk31, program awk
#zastąpienie napisu "286" przez "AT"
{ gsub( /286/, "AT" ); print $0 }

Ekran:

>awk -f mojawk31 awktekst
  Type    Mem(Kb) Location Serial#   HDSize(Mb)
  XT      640     D402     MG0010    0
  386     2048    D403     MG0011    100
  486     4096    D404     MG0012    270
  386     8192    A423     CC0177    400
  486     8192    A424     CC0182    670
  AT      4096    A423     CC0183    100
  AT      4096    A425     CC0184    80
  Mac     4096    B407     EE1027    80
  Apple   4096    B406     EE1028    40
  68020   2048    B406     EE1029    80
  68030   2048    B410     EE1030    100
  $unix   16636   A405     CC0185    660
  "trs80" 64      Z101     EL0020    0

Valid XHTML 1.0 Transitional Valid CSS!   E-mail do webmastera: sgrzes@op.pl  © Grzegorz Sala 2005 DO GÓRY