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).
Składnia
Dział zatytułowany „Składnia”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.
Parametry
Dział zatytułowany „Parametry”Parametr | Opis |
---|---|
-F | Separator pól (np. -F":" dla plików passwd) |
-f | Wczytaj program AWK z pliku |
-v var=val | Przekaż zmienną do programu |
--posix | Wymusza zgodność z POSIX AWK |
--lint | Ostrzeżenia dla nieprzenośnych konstrukcji |
--help | Wyświetla pomoc |
--version | Pokazuje wersję gawk |
Przykłady użycia
Dział zatytułowany „Przykłady użycia”# 1. Wypisz drugą kolumnę z pliku CSVgawk -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 kolumniegawk '{suma += $3} END {print suma}' raport.txt
# 4. Zmienne z zewnątrzgawk -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
).
Najczęściej spotykane błędy i jak je naprawić
Dział zatytułowany „Najczęściej spotykane błędy i jak je naprawić”Błąd / Komunikat | Przyczyna | Rozwiązanie |
---|---|---|
gawk: cmd. line:1: parse error | Błąd składniowy (np. brak nawiasu) | Sprawdź poprawność składni: print , {} , cytowanie |
cannot open file | Nieprawidłowa ścieżka do pliku | Sprawdź nazwę pliku i uprawnienia |
Złe dane wejściowe | Nieprawidłowy separator lub format | Użyj -F lub skonwertuj dane do spójnego formatu |
Linki i źródła
Dział zatytułowany „Linki i źródła”- man gawk – dokumentacja narzędzia.
- GNU Awk User’s Guide – oficjalna dokumentacja języka i narzędzia.
- awk.info – społecznościowy portal z przykładami.