Generator komend AWK
Generuj komendy AWK do przetwarzania plików tekstowych: wyodrębnij kolumny, filtruj wiersze, oblicz sumy i transformuj. Podgląd na żywo. Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
# Zamień input.txt na swój plik lub przekaż dane przez potok: cat file | awk '# Wygenerowany szablon — sprawdź i dopasuj pola/wzorce do swoich danych # Zadanie: Filter rows where column 2 matches "ERROR", print columns 1,2,5, and count matching lines. BEGIN{ OFS="\t"; } { if ($2 ~ /ERROR/) { c++; print $2; } } END{ print c; }' input.txt
awk '# Wygenerowany szablon — sprawdź i dopasuj pola/wzorce do swoich danych # Zadanie: Filter rows where column 2 matches "ERROR", print columns 1,2,5, and count matching lines. BEGIN{ OFS="\t"; } { if ($2 ~ /ERROR/) { c++; print $2; } } END{ print c; }' input.txt
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator komend AWK – przetwarzaj CSV i log pliki bez nauki AWK
AWK to potężny język do przetwarzania tekstu linia po linii – idealny do plików CSV, logów, raportów. Narzędzie generuje gotowe komendy AWK na podstawie wizualnych wyborów: wyodrębnij kolumny, filtruj wiersze, oblicz statystyki.
Podstawy AWK
AWK przetwarza plik linia po linii. Składnia: awk 'pattern {action}' plik. $0 = cała linia, $1 = pierwsze pole, $2 = drugie pole, NR = numer linii, NF = liczba pól, FS = separator (domyślnie spacja lub TAB). Separator CSV: awk -F "," lub awk -F ";"
Przykłady komend AWK
Wyodrębnij kolumnę: awk -F "," "{print $2}" dane.csv. Filtruj wiersze: awk "$3 > 100" log.txt. Suma kolumny: awk -F "," "{sum+=$2} END {print sum}" dane.csv. Liczba linii: awk "END {print NR}" plik. Zmień separator: awk -F "," "OFS=\t;$1=$1" csv. Usuń duplikaty: awk "!seen[$0]++"
Wzorce i warunki w AWK
BEGIN: wykonaj przed przetworzeniem. END: wykonaj po. /regex/: linie pasujące do wyrażenia regularnego. $2 ~ /pattern/: pole pasuje. $3 > 100 && $4 == "active": warunki złożone. NR==1: tylko pierwsza linia (nagłówek). NR>1: pomiń nagłówek. !($1 in seen): unikalne wartości pola 1.
AWK vs sed vs grep
grep: wyszukuje linie pasujące do wzorca – najprostrze. sed: edytuje strumień tekstu (zamiana, usuwanie). AWK: pełny język z zmiennymi, obliczeniami, strukturami danych. Dla kolumn: AWK najlepszy. Dla zamiany: sed. Dla wyszukiwania: grep. Kombinacja: grep ERROR log | awk "{print $3}" | sort | uniq -c.
Jak działa generator komend AWK
Generator zamienia wybory z formularza na jeden gotowy łańcuch komendy w składni awk 'pattern {action}' plik. Każdy element interfejsu odpowiada konkretnemu fragmentowi tej składni: wybrany separator trafia do opcji -F, warunek filtrowania staje się częścią wzorca (pattern), operacja na kolumnach ląduje w bloku akcji, a statystyki w bloku END. Dzięki temu nie trzeba pamiętać, gdzie w komendzie postawić cudzysłów ani jak połączyć kilka reguł w jednym wywołaniu.
Mechanizm działania samego AWK jest liniowy i przewidywalny: program wczytuje plik rekord po rekordzie (domyślnie linia = rekord), dzieli każdą linię separatorem FS na pola $1, $2, ... $NF, a następnie sprawdza kolejne wzorce. Jeśli linia pasuje do wzorca, wykonywana jest przypisana mu akcja. Generator wykorzystuje ten model, więc każdy wygenerowany warunek dotyczy pojedynczej linii — nie całego pliku naraz.
Komenda budowana przez narzędzie ma trzy możliwe etapy: blok BEGIN (wykonywany raz, przed czytaniem danych — generator dodaje go, gdy trzeba ustawić separator lub OFS), pętlę po liniach z wzorcami i akcjami oraz blok END (wykonywany raz, po przetworzeniu wszystkich linii — pojawia się przy sumowaniu, liczeniu wierszy i innych podsumowaniach). Kolejność bloków w komendzie jest istotna, dlatego generator składa je zawsze w tej samej, poprawnej kolejności.
Przykład krok po kroku: filtr na kolumnie i suma
- Wskaż plik. W polu nazwy pliku wpisz log.txt — generator dopisze tę nazwę na końcu komendy jako argument.
- Ustaw separator. Plik jest rozdzielony spacjami lub tabulatorami, więc zostaw separator domyślny. Generator nie doda wtedy opcji -F, bo AWK domyślnie dzieli właśnie po białych znakach.
- Zbuduj warunek. Wybierz kolumnę $3, operator > i wartość 100. Powstaje wzorzec $3 > 100, który przepuści tylko linie, w których trzecie pole jest większe od 100.
- Wybierz akcję. Zaznacz sumowanie kolumny $3 — generator dopisze blok akcji {sum+=$3} wykonywany dla każdej linii spełniającej warunek.
- Dodaj podsumowanie. Włącz opcję wyniku końcowego, aby powstał blok END {print sum}. Bez niego komenda nic nie wypisze, bo akcja tylko gromadzi dane w zmiennej.
- Skopiuj wynik. Otrzymujesz komendę awk '$3 > 100 {sum+=$3} END {print sum}' log.txt. Wklejasz ją do terminala w katalogu, w którym leży plik, i od razu widzisz sumę trzeciej kolumny dla wierszy spełniających warunek.
Elementy składni używane przez generator
| Element | Znaczenie | Przykład w komendzie |
|---|---|---|
| $0 | Cała bieżąca linia, przed podziałem na pola | print $0 |
| $1, $2, $3 | Kolejne pola powstałe po podziale linii separatorem | print $2 |
| NR | Numer bieżącej linii, liczony od 1 | END {print NR} |
| NF | Liczba pól w bieżącej linii | print NF |
| FS | Separator pól wejściowych | -F "," lub FS=";" |
| OFS | Separator pól wyjściowych | OFS="\t"; $1=$1 |
| BEGIN | Blok wykonany raz, przed przetwarzaniem pliku | BEGIN {FS=","} |
| END | Blok wykonany raz, po przetworzeniu wszystkich linii | END {print sum} |
Praktyczne wskazówki
- Ustaw separator świadomie. Dla pliku CSV wybierz -F ",", dla pliku z średnikami -F ";". Jeśli zostawisz domyślny podział po białych znakach, w pliku CSV pola połączą się w jedno.
- Pomiń nagłówek. Gdy plik ma wiersz z nazwami kolumn, dodaj warunek NR>1 przed akcją. Bez tego nagłówek zostanie potraktowany jak zwykły rekord i zaburzy sumy oraz średnie.
- Testuj na wycinku danych. Zanim uruchomisz komendę na całym pliku, sprawdź ją na kilku pierwszych liniach, przekazując je potokiem do AWK. Błąd w numerze kolumny zobaczysz od razu, a nie po przeliczeniu całego zbioru.
- Uważaj na cytowanie w powłoce. Program AWK najlepiej objąć cudzysłowem pojedynczym, żeby powłoka nie rozwijała znaków $1 i $0 przed uruchomieniem AWK. Cudzysłów podwójny jest bezpieczny tylko wtedy, gdy nie zawiera znaków specjalnych.
- Zmieniaj OFS rozmyślnie. Samo ustawienie OFS nie przebuduje linii — dopiero przypisanie $1=$1 wymusza ponowne złożenie rekordu z nowym separatorem. Bez tego wyjście pozostanie w formacie wejściowym.
Ograniczenia i pułapki
- CSV w cudzysłowach. Generator buduje komendy na podstawie prostego podziału separatorem. Jeśli pole zawiera przecinek zamknięty w cudzysłowie, rozjedzie się na dwie kolumny i numeracja pól przesunie się o jeden.
- Różnice między wariantami AWK. gawk, mawk i busybox awk nie mają identycznego zestawu funkcji. Narzędzie generuje składnię podstawową, więc bardziej zaawansowane rozszerzenia trzeba dopisać ręcznie i sprawdzić w swojej wersji.
- Locale i przecinek dziesiętny. W polskim ustawieniu regionalnym liczby bywają zapisywane z przecinkiem, który jednocześnie bywa separatorem kolumn. To potrafi zepsuć zarówno podział na pola, jak i porównania liczbowe.
- Rekordy wieloliniowe. AWK domyślnie traktuje każdą linię jako osobny rekord, więc pole rozciągnięte na kilka linii (na przykład opis w cudzysłowie) zostanie policzone jako kilka rekordów i zafałszuje statystyki.
Najczęstsze pytania
Jak przetwarzać CSV z AWK?
awk -F "," "{print $1, $3}" plik.csv. Dla nagłówka: awk -F "," "NR>1 {print $2}" (pomija pierwszą linię). Cudzysłowy w CSV: AWK nie obsługuje RFC 4180 – do złożonych CSV użyj pythona (csv module) lub mlr (Miller tool).
Jak obliczać średnią z kolumny AWK?
awk -F "," "{sum+=$2; count++} END {if(count>0) print sum/count}" dane.csv. Pomiń nagłówek: awk -F "," "NR>1 {sum+=$2; count++} END {print sum/count}". Zaokrąglenie: printf "%.2f\n", sum/count.
Jak usunąć duplikaty z pliku AWK?
awk "!seen[$0]++" plik.txt: usuwa powtarzające się linie. !seen[$1]++: unikalne po pierwszej kolumnie. Posortowane: sort plik | uniq. AWK jest szybszy gdy plik nie musi być posortowany.
Gdzie uruchomić AWK na Windows?
Git Bash: AWK dostępny (GNU Awk). WSL (Windows Subsystem for Linux): pełny Linux. Cygwin: POSIX layer z AWK. PowerShell: brak natywnego AWK. Online: narzędzie na tej stronie lub awk.js (WebAssembly AWK). Notatka: niektóre AWK warianty (gawk, mawk, nawk) mogą mieć różne opcje.
Jaka jest różnica między awk, gawk, mawk?
awk: POSIX standard. gawk (GNU awk): rozszerzony, większość Linuxów. mawk: szybszy od gawk, mniej rozszerzony. nawk (new awk): używany na BSD/macOS. Na produkcji: sprawdź która wersja jest zainstalowana (awk --version). Kompatybilność: podstawowe wyrażenia działają na wszystkich.
Jak wygenerować komendę AWK do sumowania kolumny?
Wybierz kolumnę, którą chcesz sumować, i włącz akcję sumowania. Generator doda blok akcji z dodawaniem do zmiennej oraz blok END z wypisaniem wyniku, na przykład END {print sum}.
Czy generator obsługuje pliki CSV rozdzielone średnikiem?
Tak. Wystarczy wybrać średnik jako separator, a narzędzie doda opcję -F ";". Domyślny podział po białych znakach nie zadziała dla takiego pliku.
Dlaczego komenda AWK nie widzi moich kolumn?
Najczęstszą przyczyną jest zły separator. AWK domyślnie dzieli linię po spacji lub tabulatorze, więc plik CSV bez opcji -F zostanie potraktowany jako jedna kolumna.
Jak pominąć nagłówek w AWK?
Dodaj warunek NR>1 przed blokiem akcji. Sprawi on, że pierwsza linia pliku zostanie pominięta, a przetwarzanie obejmie tylko wiersze z danymi.
Czy wygenerowaną komendę uruchomię w Windows?
W PowerShell i cmd nie ma natywnego AWK, ale komenda zadziała w WSL, Git Bash lub w środowisku z zainstalowanym gawk. Cytowanie i wywołanie pliku mogą wymagać drobnej korekty.
Powiązane narzedzia: generator komend sed, generator komend grep i formater JSON API.