Acabo de empezar a aprender awk y estoy un poco confundido acerca de todas esas versiones. ¿Hay alguna "versión" que se encuentre en todos los sistemas tipo Unix? Como, ya sabes, ¿simple vi? ¿El awk estándar admite la opción -F?
awk : el más común y se encontrará en la mayoría de los sistemas tipo Unix, la versión más antigua e inferior a los más nuevos.
mawk : implementación rápida de AWK cuyo código base se basa en un intérprete de código de bytes.
nawk : mientras se desarrollaba el lenguaje AWK, los autores lanzaron una nueva versión (de ahí el n - n ew awk) para evitar confusiones. Piense en ello como el Python 3.0 de AWK.
gawk : abreviado de GNU awk. La única versión en la que los desarrolladores intentaron agregar soporte para i18n. Permitía a los usuarios escribir sus propias bibliotecas compartidas en C para ampliarlas con sus propios "complementos". Esta versión es la implementación estándar para Linux, el AWK original fue escrito para Unix v7.
Hay otras versiones como jawk (implementación de java), bwk (implementación de Brian W. Kernighan), etc.
/usr/bin/awk
ejecutará nawk, o gawk, o BusyBox awk (similar en comportamiento a gawk).file /etc/alternatives/awk
regresasymbolic link to /usr/bin/mawk
Solo puedes usar
awk
. Está definido por POSIX y, por lo tanto, debe existir en todos los sistemas conformes con POSIX.El
-F
parámetro también es obligatorio por eso .fuente
gensub()
, pruebe conawk
->gawk
, y piense que está listo para ir ...gawk --posix
para hacer que gawk funcione de acuerdo con el estándar POSIX. También verifica que su script siga el estándar. Puede usarloawk --posix '' 2>/dev/null
en Ubuntu sin importar si gawk, mawk u original-awk se usan como awk, pero la opción posix solo es reconocida por gawk. --posix tiene que ser la última opción para original-awk. Se puede usarawk -W posix ''
con gawk y mawk.mawk --posix ''
falla, si usa mawk 1.3.3, pero tiene éxito con el mensaje de error, si usa mawk 1.3.4awk
estará en casi todos los sistemas basados en * NIX, pero los detalles exactos de lo que admite cambiarán ligeramente, ya que es completamente posible, simplemente se vincularán a una versión diferente similar a la que a/bin/sh
menudo se vincula a un shell específico, a menudobash
o uno de sus derivados (Para que conste, también conozco muchas máquinas a las que tambiénvi
está vinculadovim
).fuente
La página Wikipedia AWK es una buena referencia inicial para comenzar a entender AWK.
La opción de separador de campo '
-F
' es compatible con todas las variantes de AWK - afaik.fuente