Przejdź do głównej zawartości

gawk


  • gawk – implementacja języka AWK przez projekt GNU, służąca do przetwarzania tekstu, analizy danych w formacie kolumnowym i automatyzacji operacji tekstowych.
  • Obsługuje wzorce i akcje (pattern { action }), struktury sterujące, zmienne, tablice asocjacyjne i funkcje.
  • Dostępny na większości dystrybucji Linux, macOS i Windows (via MSYS/Cygwin).

Okno terminala
gawk [opcje] 'program' [plik...]
  • program – kod AWK w formie inline lub załadowany z pliku.
  • Plik wejściowy może być plikiem tekstowym, CSV, logiem itp.

ParametrOpis
-FSeparator pól (np. -F":" dla plików passwd)
-fWczytaj program AWK z pliku
-v var=valPrzekaż zmienną do programu
--posixWymusza zgodność z POSIX AWK
--lintOstrzeżenia dla nieprzenośnych konstrukcji
--helpWyświetla pomoc
--versionPokazuje wersję gawk

Okno terminala
# 1. Wypisz drugą kolumnę z pliku CSV
gawk -F, '{print $2}' dane.csv
# 2. Zlicz linie zawierające słowo "błąd"
gawk '/błąd/ {count++} END {print count}' log.txt
# 3. Wyświetl sumę wartości w trzeciej kolumnie
gawk '{suma += $3} END {print suma}' raport.txt
# 4. Zmienne z zewnątrz
gawk -v limit=10 '$2 > limit {print $1}' dane.txt
  • Pierwszy przykład pobiera konkretną kolumnę z danych CSV.
  • Drugi zlicza ilość linii z dopasowaniem regex.
  • Trzeci sumuje liczby w kolumnie.
  • Czwarty pokazuje przekazanie zmiennej z zewnątrz i warunkowe filtrowanie.

  • Domyślnym separatorem pól jest biały znak (FS = " "), ale można go zmieniać (-F, BEGIN { FS = "," }).
  • Pola to $1, $2, …, $NF (ostatnie pole), cała linia to $0.
  • Blok BEGIN {} wykonywany jest przed przetworzeniem danych; END {} – po zakończeniu.
  • Obsługuje tablice asocjacyjne, wyrażenia warunkowe, funkcje użytkownika i biblioteki.
  • Jest w pełni kompatybilny z AWK, ale zawiera rozszerzenia GNU (np. gensub, asort).

Błąd / KomunikatPrzyczynaRozwiązanie
gawk: cmd. line:1: parse errorBłąd składniowy (np. brak nawiasu)Sprawdź poprawność składni: print, {}, cytowanie
cannot open fileNieprawidłowa ścieżka do plikuSprawdź nazwę pliku i uprawnienia
Złe dane wejścioweNieprawidłowy separator lub formatUżyj -F lub skonwertuj dane do spójnego formatu