Je viens de commencer à apprendre awk et je suis un peu confus à propos de toutes ces versions. Y a-t-il une "version" qui se trouve sur tous les systèmes de type Unix? Comme, vous savez, plaine vi? L'awk standard prend-il en charge l'option -F?
awk - le plus courant et se retrouvera sur la plupart des systèmes de type Unix, la version la plus ancienne et inférieure aux plus récents.
mawk - l'implémentation AWK rapide dont la base de code est basée sur un interpréteur de code octet.
nawk - pendant le développement du langage AWK, les auteurs ont publié une nouvelle version (d'où le n - n ew awk) pour éviter toute confusion. Pensez-y comme le Python 3.0 d'AWK.
gawk - abrégé de GNU awk. La seule version dans laquelle les développeurs ont tenté d'ajouter le support i18n. Les utilisateurs autorisés à écrire leurs propres bibliothèques partagées C pour l'étendre avec leurs propres "plug-ins". Cette version est l'implémentation standard pour Linux, l'AWK d'origine a été écrit pour Unix v7.
Il existe d'autres versions comme jawk (implémentation java), bwk (implémentation de Brian W. Kernighan) et ainsi de suite.
/usr/bin/awk
exécutera nawk, ou gawk, ou BusyBox awk (comportement similaire à gawk).file /etc/alternatives/awk
revientsymbolic link to /usr/bin/mawk
Vous pouvez simplement utiliser
awk
. Il est défini par POSIX et doit donc exister sur tous les systèmes conformes à POSIX.Le
-F
paramètre est également mandaté par cela .la source
gensub()
, ne testez pas avecawk
->gawk
, et pensez que vous êtesgawk --posix
pour faire fonctionner gawk selon la norme POSIX. Il vérifie également que votre script respecte la norme. Vous pouvez utiliserawk --posix '' 2>/dev/null
dans Ubuntu, peu importe, si gawk, mawk ou original-awk est utilisé comme awk, mais l'option posix n'est reconnue que par gawk. --posix doit être la dernière option pour original-awk. Vous pouvez utiliserawk -W posix ''
avec gawk et mawk.mawk --posix ''
échoue, si vous utilisez mawk 1.3.3, mais réussit avec un message d'erreur, si vous utilisez mawk 1.3.4awk
sera sur à peu près tous les systèmes basés sur * NIX, mais les détails exacts de ce qu'il prend en charge changeront légèrement car il est tout à fait possible, il sera simplement lié à une version différente semblable à la façon dont/bin/sh
est souvent lié à un shell spécifique, souventbash
ou l'un des ses dérivés. (Pour mémoire, je connais aussi beaucoup de machines oùvi
est également lié à un lien symboliquevim
.)la source
La page Wikipedia AWK est une bonne référence pour commencer à comprendre AWK.
L' option Séparateur de champs '
-F
' est prise en charge dans toutes les variantes d'AWK-afaik.la source