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?
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.
/usr/bin/awk
uruchamia nawk, gawk lub BusyBox awk (podobny w zachowaniu do gawk).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 .źródło
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.4awk
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ęstobash
lub jedną z jego pochodne. (Dla przypomnienia, znam też wiele maszyn, do którychvi
jest również dowiązany symbolicznievim
).źródło
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
źródło