Ich habe gerade angefangen, awk zu lernen und bin ein wenig verwirrt über all diese Versionen. Gibt es eine "Version", die auf allen Unix-ähnlichen Systemen zu finden ist? Weißt du, schlicht vi? Unterstützt der Standard awk die Option -F?
awk - das gebräuchlichste und wird auf den meisten Unix-ähnlichen Systemen zu finden sein, älteste Version und schlechter als neuere.
mawk - schnelle AWK-Implementierung, deren Codebasis auf einem Bytecode-Interpreter basiert.
nawk - während die AWK Sprache der Autoren eine neue Version entwickelt wurde (daher die frei n - n ew awk) um Verwirrung zu vermeiden. Stellen Sie es sich wie Python 3.0 von AWK vor.
gawk - abgekürzt von GNU awk. Die einzige Version, in der die Entwickler versuchten, i18n-Unterstützung hinzuzufügen. Erlaubte Benutzern, ihre eigenen C-Shared Libraries zu schreiben, um sie mit ihren eigenen "Plug-Ins" zu erweitern. Diese Version ist die Standardimplementierung für Linux, das ursprüngliche AWK wurde für Unix v7 geschrieben.
Es gibt andere Versionen wie jawk (Java-Implementierung), bwk (Brian W. Kernighans Implementierung) und so weiter.
/usr/bin/awk
läuft nawk oder gawk oder BusyBox awk (ähnliches Verhalten wie gawk).file /etc/alternatives/awk
kehrt zurücksymbolic link to /usr/bin/mawk
Sie können nur verwenden
awk
. Es wird von POSIX definiert und muss daher auf allen POSIX-konformen Systemen vorhanden sein.Damit ist auch der
-F
Parameter beauftragt .quelle
gensub()
, testen Sie zum Beispiel nicht mitawk
->gawk
und denken Sie, Sie könnengawk --posix
gawk nach POSIX-Standard arbeiten lassen. Es überprüft auch, ob Ihr Skript dem Standard entspricht. Sie könntenawk --posix '' 2>/dev/null
in Ubuntu verwenden, egal ob gawk, mawk oder original-awk als awk verwendet wird, aber die posix-Option wird nur von gawk erkannt. --posix muss die letzte Option für original-awk sein. Sie könntenawk -W posix ''
mit gawk und mawk verwenden.mawk --posix ''
schlägt fehl, wenn Sie mawk 1.3.3 verwenden, aber mit Fehlermeldung erfolgreich, wenn Sie mawk 1.3.4 verwendenawk
wird auf nahezu jedem * NIX-basierten System verfügbar sein, aber die genauen Spezifikationen der unterstützten Systeme werden sich geringfügig ändern, da es durchaus möglich ist, dass sie einfach mit einer anderen Version/bin/sh
verknüpft werden, ähnlich der, die häufig mit einer bestimmten Shell verknüpft ist, häufigbash
oder mit einer von seine Derivate. (Ich kenne auch eine Menge Maschinen, auf denen ebenfallsvi
Symlinks vorhanden sindvim
.)quelle
Die Wikipedia AWK-Seite ist eine gute Referenz für den Einstieg in AWK.
Die Feldtrenn Option ‚
-F
‘ ist in allen unterstützten Varianten von AWK - afaik.quelle