awk
W tej książce opisano implementację GNU narzędzia awk, przestrzegającą
specyfikacji POSIX. Wielu użytkowników awk zna tylko pierwotną
implementację awk z Unix Version 7. (Implementacja ta była bazą dla
awk w Berkeley Unix, aż do 4.3--Reno. Wydanie 4.4 Berkeley Unix
korzysta z gawk 2.15.2 jako własnej wersji awk.)
W tym rozdziale pokrótce opisano ewolucję języka awk, z odsyłaczami
do innej części książki, gdzie można znaleźć więcej informacji.
Język awk znacząco ewoluował pomiędzy wydaniem Version 7 Unix (1978)
a nową wersją, po raz pierwszy ogólnie dostępną w System V Release 3.1
(1987). W niniejszej sekcji podsumowano zmiany, z odsyłaczami do
dodatkowych szczegółów.
awk a wiersze).
return
(zob. 13. Funkcje definiowane przez użytkownika).
delete (zob. 11.6. Instrukcja delete).
do-while
(zob. 9.3. Instrukcja do-while).
atan2, cos, sin, rand i
srand (zob. 12.2. Wbudowane funkcje numeryczne).
gsub, sub i match
(zob. 12.3. Funkcje wbudowane działające na łańcuchach).
close i system
(zob. 12.4. Wbudowane funkcje wejścia/wyjścia).
ARGC, ARGV, FNR, RLENGTH,
RSTART i SUBSEP (zob. 10. Zmienne wbudowane).
awk
(zob. 7.14. Priorytet operatorów (Jak łączą się różne operatory)).
FS
(zob. 5.5. Jak rozdzielać pola), i jako trzeci argument
funkcji split
(zob. 12.3. Funkcje wbudowane działające na łańcuchach).
awk tak, by
rozpoznawały `\r', `\b', and `\f', ale nie jest to coś, na
czym można polegać.)
getline
(zob. 5.8. Odczyt bezpośredni przez getline).
BEGIN i END
(zob. 8.1.5. Wzorce specjalne BEGIN i END).
W uniksowej wersji awk z System V Release 4 wersja dodano takie
funkcje (część z nich została zapoczątkowana w gawk):
ENVIRON (zob. 10. Zmienne wbudowane).
srand
(zob. 12.2. Wbudowane funkcje numeryczne).
toupper i tolower
do konwersji wielkości liter
(zob. 12.3. Funkcje wbudowane działające na łańcuchach).
printf (zob. 6.5.2. Litery sterujące formatem).
"%*.*d") w liście argumentów funkcji printf
(zob. 6.5.2. Litery sterujące formatem).
/foo/, jako wyrażeń,
równoważnych użyciu operatora dopasowania, jak w `$0 ~ /foo/'
(zob. 7.2. Używanie stałych regexp).
awk
W POSIX-owym standardzie języka poleceń i narzędzi (Command Language and
Utilities) wprowadzono następujące zmiany do języka awk:
CONVFMT do sterowania konwersją liczb na łańcuchy
(zob. 7.4. Konwersja łańcuchów i liczb).
Poniższe popularne rozszerzenia nie są dozwolone przez standard POSIX:
\x
(zob. 4.2. Sekwencje specjalne).
FS jest równe pojedynczej spacji.
func słowa kluczowego function
(zob. 13.1. Składnia definicji funkcji).
FS wartości
pojedynczej tabulacji (zob. 5.5. Jak rozdzielać pola).
fflush
(zob. 12.4. Wbudowane funkcje wejścia/wyjścia).
awk z Bell Laboratories
Brian Kernighan, jeden z pierwotnych projektantów uniksowego awk,
udostępnił swoją wersję przez anonimowe ftp
(zob. B.8. Inne wolnodostępne implementacje awk).
Opisujemy tu te rozszerzenia w jego wersji awk, które nie występują
w POSIX-owym awk.
fflush do opróżniania buforowanego wyjścia
(zob. 12.4. Wbudowane funkcje wejścia/wyjścia).
gawk poza POSIX awk
Implementacja GNU, gawk, dodaje wiele możliwości.
W tej sekcji opisano je w kolejności, w jakiej były dodawane do gawk.
Można je wyłączyć za pomocą opcji albo `--traditional'
albo `--posix' (zob. 14.1. Opcje wiersza poleceń).
W wersji 2.10 gawk wprowadzono takie cechy:
AWKPATH do określania ścieżki wyszukiwania dla
opcji `-f' wiersza poleceń (zob. 14.1. Opcje wiersza poleceń).
IGNORECASE i jej skutki
(zob. 4.5. Uwzględnianie wielkości liter w dopasowaniach).
gawk).
W wersji 2.13 gawk wprowadzono takie cechy:
FIELDWIDTHS i jej skutki
(zob. 5.6. Czytanie danych o stałej szerokości).
systime i strftime do uzyskiwania i
wypisywania znaczników czasu
(zob. 12.5. Funkcje obsługi znaczników czasu).
W wersji 2.14 gawk wprowadzono takie cechy:
next file do przechodzenia do następnego pliku
danych (zob. 9.8. Instrukcja nextfile).
W wersji 2.15 gawk wprowadzono takie cechy:
ARGIND, zapamiętująca przemieszczanie się FILENAME
przez ARGV (zob. 10. Zmienne wbudowane).
ERRNO, która zawiera komunikat o błędzie systemowym gdy
getline zwróci -1 lub zawiedzie close
(zob. 10. Zmienne wbudowane).
gawk).
W wersji 3.0 gawk wprowadzono takie cechy:
next file stała się nextfile
(zob. 9.8. Instrukcja nextfile).
awk z Version 7 Unix
(zob. 17.1. Główne różnice między V7 a SVR3.1).
FS było łańcuchem pustym, również trzeci argument
split może być łańcuchem pustym
(zob. 5.5.3. Jak z każdego znaku zrobić osobne pole).
RS było wyrażeniem regularnym
(zob. 5.1. Jak wejście dzielone jest na rekordy).
RT
(zob. 5.1. Jak wejście dzielone jest na rekordy).
gensub do efektywniejszego operowania na tekście
(zob. 12.3. Funkcje wbudowane działające na łańcuchach).
strftime uzyskała domyślny format czasu, pozwalający na
wywoływanie jej bez argumentów
(zob. 12.5. Funkcje obsługi znaczników czasu).
IGNORECASE, obecnie stosowane zarówno tak do porównań
łańcuchów jak i operacji na wyrażeniach regularnych.
(zob. 4.5. Uwzględnianie wielkości liter w dopasowaniach).
fflush z wersji awk
z Bell Labs research
(zob. 14.1. Opcje wiersza poleceń; także
zob. 12.4. Wbudowane funkcje wejścia/wyjścia).
gawk dla Uniksa).
gawk na Amidze).
Przejdź do pierwszej, poprzedniej, następnej, ostatniej sekcji, spisu treści.