Właśnie zacząłem uczyć się awk i jestem trochę zdezorientowany tymi wszystkimi wersjami. Czy jest jakaś „wersja”, którą można znaleźć we wszystkich systemach uniksowych? Na przykład zwykły vi? Czy standardowy awk obsługuje opcję -F?
Właśnie zacząłem uczyć się awk i jestem trochę zdezorientowany tymi wszystkimi wersjami. Czy jest jakaś „wersja”, którą można znaleźć we wszystkich systemach uniksowych? Na przykład zwykły vi? Czy standardowy awk obsługuje opcję -F?
Odpowiedzi:
awk - najczęstszy i będzie dostępny na większości systemów uniksopodobnych, najstarszej wersji i gorszej od nowszych.
mawk - szybka implementacja AWK, której podstawa jest oparta na interpreterze bajt-kod.
nawk - podczas opracowywania języka AWK autorzy opublikowali nową wersję (stąd n - n ew awk), aby uniknąć zamieszania. Pomyśl o tym jak o Python 3.0 AWK.
gawk - w skrócie GNU awk. Jedyna wersja, w której programiści próbowali dodać obsługę i18n. Pozwolono użytkownikom pisać własne biblioteki współużytkowane w języku C, aby rozszerzyć je o własne „wtyczki”. Ta wersja jest standardową implementacją dla Linuksa, oryginalny AWK został napisany dla Uniksa v7.
Istnieją inne wersje, takie jak jawk (implementacja java), bwk (implementacja Briana W. Kernighana) i tak dalej.
file /etc/alternatives/awk
powracasymbolic link to /usr/bin/mawk
Możesz po prostu użyć awk
. Jest zdefiniowany przez POSIX i dlatego musi istnieć we wszystkich systemach zgodnych z POSIX.
Ten -F
parametr jest również przez to upoważniony .
gensub()
, testuj za pomocą awk
-> gawk
i myślę, że dobrze jest iść ...
gawk --posix
aby gawk działał zgodnie ze standardem POSIX. Sprawdza również, czy skrypt jest zgodny ze standardem. Możesz używać awk --posix '' 2>/dev/null
w Ubuntu bez względu na to, czy gawk, mawk lub original-awk jest używany jako awk, ale opcja posix jest rozpoznawana tylko przez gawk. --posix musi być ostatnią opcją dla original-awk. Możesz użyć awk -W posix ''
z gawk i mawk.
mawk --posix ''
nie powiedzie się, jeśli użyjesz mawk 1.3.3, ale powiedzie się komunikat o błędzie, jeśli użyjesz mawk 1.3.4
awk
będzie działał na prawie każdym * systemie opartym na NIX, ale dokładna specyfikacja obsługiwanych przez niego urządzeń zmieni się nieznacznie, ponieważ jest to całkowicie możliwe, po prostu zostanie dowiązany do innej wersji, podobnej do tego, jak /bin/sh
często jest powiązany z określoną powłoką, często bash
lub jedną z jego pochodne. (Dla przypomnienia, znam też wiele maszyn, do których vi
jest również dowiązany symbolicznie vim
).
Strona AWK Wikipedii jest dobrym źródłem informacji dla początkujących do zrozumienia AWK. Pole Separator opcja „ ” jest obsługiwana we wszystkich wariantach AWK - AFAIK. -F
/usr/bin/awk
uruchamia nawk, gawk lub BusyBox awk (podobny w zachowaniu do gawk).