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
..:: Przykłady ::..

   Wyświetlenie zawartości pliku "plik" na ekranie (jeżeli nie jest podany wzorzec, to zostaną wypisane wszystkie linie):

>awk '{print}' plik


   Wyświetlenie lini zawierajacych ciąg "napis" z pliku "plik" - analogicznie do polecenia "grep" (jeżeli nie wyspecyfikujemy polecenia, zostanie domyślnie użyte {print}):

>awk '/napis/' plik


   Wyświetlenie lini od 14 do 30 z pliku "plik":

>awk 'NR==14, NR==30' plik


   Wyświetlenie jednej lini z pliku "plik":

>awk 'NR==12' plik
>awk "NR==$1" plik


   Zamiana pól 1 oraz 2 i rozdzielenie ich dwukropkiem:

>awk '{print $2 ":" $1}' plik


   Wyświetlenie wszystkich lini pomiedzy linią BEGIN oraz END (BEGIN oraz END można zastapić dowolnym ciągiem znaków ograniczonym ukośnikami):

>awk '/BEGIN/,/END/' plik


   Zliczenie ilości lini w pliku (analogicznie do "wc -l" ):

>awk 'END{print NR}' plik


   Zastąpienie każdego ciągu liter XYZ przez ABC:

>awk '{gsub(/XYZ/,"ABC"); print}' plik


   Ustawienie dwukropka jako separatora pól, i wyświetlenie trzeciego pola z kazdej lini:

>awk -F: '{print $3}' plik


   Wyświetlenie ostatniego pola w każdej lini, niezależnie od ilości pól w poszcególnych liniach:

>awk '{print $NF}' plik


   Wyświetlenie numerów poszczególnych lini:

>awk '{print NR, $0}' plik

   Wyświetlenie numerów poszczególnych lini z wyrównaniem numerowania do lewej strony pierwszego pola:

>awk '{printf "%3d %s\n", NR, $0}' plik


   Wyświetlenie ilości znaków w w poszczególnych liniach:

>awk '{print length($0)}' plik

   lub:

>awk '{print length}' plik


   Wyświetlenie lini dłuższych niż 80 znaków, wraz z ich numerami:

>awk 'length > 80 {printf "%3d. %s\n", NR, $0}' plik


   Wyświetlenie całkowitego rozmiaru plików, wybranych poleceniem "ls -l":

>ls -l | awk 'BEGIN{total=0} {total += $5} END{print total}'


   Wyświetlenie najdłuższej lini w pliku:

>awk 'BEGIN {maxlength = 0}
{
    if (length($0) > maxlength)
    {
       maxlength = length($0)
       longest = $0
    }
}
END {print longest}' plik


   Zliczenie pustych lini w pliku:

>awk '/^$/ {x++} END {print x}' plik


   Wyświetlenie ostatniego znaku z pierwszego pola w każdej lini:

>awk '{print substr($1,length($1),1)}' plik


   Wyświetlenie lini zakończonych dwukropkiem. Polecenie przydatne np do odczytania scieżki z wyniku polecenia "ls -lR":

>awk '{
      lastchar = substr($0,length($0),1)
      if (lastchar == ":")
         print $0
      }'


   Złamanie lini zawierajacych wiecej niż 80 znaków:

>awk '{ line = $0
    while (length(line) > 80) {
       print substr(line,1,80)
       line = substr(line,81,length(line)-80)
    }
    if (length(line) > 0) print line
  }' plik


   Wyświetlenie znaków od 32 do 127 z tablicy kodów ASCII:

>awk 'END{for (i=32; i<127; i++)
    printf "%3d %3x %c\n", i,i,i
  }' < /dev/null


   Wyświetlenie pól zawierających określony ciąg liter np zaczynających się od "X=". Przykładowy plik może mieć postać:

    50 30 X=10 Y=100 Z=-2
    X=12 89 100 32 Y=900
    1 2 3 4 5 6 X=1000

   Aby wyświetlic wartości X wydajemy polecenie:

>awk '{ for (i=1; i<=NF; i++)
       if ($i ~ /X=.*/)
         print substr($i,3)
}' plik


   Łączenie lini zakończonych myślnikiem. Jednocześnie są lączone tylko dwie linie, a myślnik jest usuwany:

>awk '/-$/ {oldline = $0
    getline
    print substr(oldline,1,length(oldline)-1) $0
    next}
  {print}'


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