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?
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?
Respuestas:
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.
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 .
gensub()
, pruebe con awk
-> 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 usarlo awk --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 usar awk -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.4
awk
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 menudo bash
o uno de sus derivados (Para que conste, también conozco muchas máquinas a las que también vi
está vinculado vim
).
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.
/usr/bin/awk
ejecutará nawk, o gawk, o BusyBox awk (similar en comportamiento a gawk).