Opracowany przez | Alfred Aho , Brian Kernighan i Peter J. Weinberger |
---|---|
Pierwsza wersja | 1979 |
Ostatnia wersja | IEEE Std 1003.1-2008 |
Kaucja | openbsd.su/src/usr.bin/awk |
Rodzaj |
Narzędzie UNIX ( d ) Język programowania oparty na danych ( d ) Język skryptowy Programowanie proceduralne Programowanie oparte na danych ( en ) |
awk - nazwany na cześć trzech twórców, Alfreda Aho , Petera Weinbergera i Briana Kernighana - jest opartym na wierszach językiem przetwarzania plików płaskich , dostępnym w większości systemów Unix i Windows z MinGW , Cygwin lub Gawk . Jest używany głównie do manipulacji plikami tekstowymi w celu wykonania złożonych operacji wyszukiwania, zastępowania i przekształcania.
Awk jest najczęściej używany do tworzenia plików tekstowych o określonych specyfikacjach (wymiany między różnymi heterogenicznymi systemami informacyjnymi). Jest również używany jako pliki analizatora ( parsera ) XML lub pliki tekstowe do generowania poleceń SQL z wyodrębnionych danych. Wreszcie, może być używany do złożonych operacji obliczeniowych i formatowania surowych danych w celu tworzenia tabel statystycznych.
Rozróżniamy awk, oryginalne polecenie, od nowego awk (nawk), który pojawił się nieco później na rynku. Implementacje GNU awk są w rzeczywistości nowymi awk . Polecenie awk zwykle znajduje się w / usr / bin w Uniksie, ale niektóre systemy GNU / Linux umieszczają je w / bin. Wymusza to typ shebang,#!/usr/bin/env awk -f aby zapewnić maksymalną przenośność skryptów awk.
Działa jako programowalny filtr, pobierając serię linii jako dane wejściowe (jako pliki lub bezpośrednio przez standardowe wejście) i zapisując na standardowe wyjście, które może zostać przekierowane do innego pliku lub programu. Program Awk składa się z trzech odrębnych bloków, które mogą, ale nie muszą być używane do przetwarzania pliku (przetwarzanie wstępne, przetwarzanie, przetwarzanie końcowe). Awk czyta dane wejściowe wiersz po wierszu, a następnie wybiera (lub nie) wiersze do przetworzenia za pomocą wyrażeń regularnych (i ewentualnie numerów wierszy). Po wybraniu linii jest ona dzielona na pola zgodnie z separatorem wejściowym oznaczonym w programie awk symbolem FS (który domyślnie odpowiada spacji lub znaku tabulacji). Wtedy w zmiennych dostępne są różne pola: 1 zł (pierwsze pole), 2 zł (drugie pole), 3 zł (trzecie pole),…, $ NF (ostatnie pole).
„Awk” to także rozszerzenie nazwy pliku używane dla skryptów napisanych w tym języku (rzadko używane).
Składnia jest inspirowana C :
awk [options] [programme] [fichier]
gdzie struktura programu jest następująca:
'motif1 { action1 }
motif2 { action2 } …'
Każda linia pliku jest kolejno porównywana z różnymi wzorcami (najczęściej wyrażeniami regularnymi i globalnie wyrażeniem logicznym) oraz działaniem pierwszego wzorca zwracającego prawdziwą wartość jest wykonywany. Jeśli nie zostanie przyjęty żaden powód, program przechodzi do przetwarzania następnego wiersza.
Niektóre opcje:
Plik jest podzielony na wiersze ( rekordy w języku angielskim), które są podzielone na pola ( pola w języku angielskim)
Separatory wejścia-wyjścia są przechowywane w zmiennych i można je zmienić:
Mamy dwie specjalne maski:
Aby zdefiniować interwał, używamy przecinka w następujący sposób:
Kilka funkcji jest już zaimplementowanych:
Mamy struktury kontrolne. Składnia pochodzi bezpośrednio z C:
W porównaniu do C istnieje kilka rozszerzeń:
Istnieje wiele programów, które używają składni oryginalnego awk, oto najbardziej znane: