Przejdź do pierwszej, poprzedniej, następnej, ostatniej sekcji, spisu treści.
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.
- Wymaganie `;' do rozdzielania reguł w wierszu (zob. 2.6. Instrukcje
awk a wiersze).
- Funkcje definiowane przez użytkownika, instrukcja
return (zob. 13. Funkcje definiowane przez użytkownika).
- Instrukcja
delete (zob. 11.6. Instrukcja delete ).
- Instrukcja
do -while (zob. 9.3. Instrukcja do -while ).
- Funkcje wbudowane
atan2 , cos , sin , rand i srand (zob. 12.2. Wbudowane funkcje numeryczne).
- Funkcje wbudowane
gsub , sub i match (zob. 12.3. Funkcje wbudowane działające na łańcuchach).
- Funkcje wbudowane
close i system (zob. 12.4. Wbudowane funkcje wejścia/wyjścia).
- Zmienne wbudowane
ARGC , ARGV , FNR , RLENGTH , RSTART i SUBSEP (zob. 10. Zmienne wbudowane).
- Wyrażenie warunkowe stosujące operator trójargumentowy `?:' (zob. 7.12. Wyrażenia warunkowe).
- Operator potęgowania `^' (zob. 7.5. Operatory arytmetyczne) i odpowiadająca mu postać operatora przypisania `^=' (zob. 7.7. Wyrażenia przypisania).
- Priorytet operatorów zgodny z C, co psuje niektóre stare programy
awk (zob. 7.14. Priorytet operatorów (Jak łączą się różne operatory)).
- Wyrażenia regularne jako wartość
FS (zob. 5.5. Jak rozdzielać pola), i jako trzeci argument funkcji split (zob. 12.3. Funkcje wbudowane działające na łańcuchach).
- Dynamiczne wyrażenia regularne jako operandy operatorów `~' i `!~' (zob. 4.1. Jak stosować wyrażenia regularne).
- Sekwencje specjalne `\b', `\f' i `\r' (zob. 4.2. Sekwencje specjalne). (Niektórzy producenci zaktualizowali swoje stare wersje
awk tak, by rozpoznawały `\r', `\b', and `\f', ale nie jest to coś, na czym można polegać.)
- Przekierowanie wejścia funkcji
getline (zob. 5.8. Odczyt bezpośredni przez getline ).
- Wiele reguł
BEGIN i END (zob. 8.1.5. Wzorce specjalne BEGIN i END ).
- Tablice wielowymiarowe (zob. 11.9. Tablice wielowymiarowe).
W uniksowej wersji awk z System V Release 4 wersja dodano takie funkcje (część z nich została zapoczątkowana w gawk ):
W POSIX-owym standardzie języka poleceń i narzędzi (Command Language and Utilities) wprowadzono następujące zmiany do języka awk :
Poniższe popularne rozszerzenia nie są dozwolone przez standard POSIX:
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 .
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:
W wersji 2.13 gawk wprowadzono takie cechy:
W wersji 2.14 gawk wprowadzono takie cechy:
W wersji 2.15 gawk wprowadzono takie cechy:
W wersji 3.0 gawk wprowadzono takie cechy:
Przejdź do pierwszej, poprzedniej, następnej, ostatniej sekcji, spisu treści.
|