awk, mawk, nawk, gawk… O QUÊ?

26

Acabei de começar a aprender o awk e estou um pouco confuso sobre todas essas versões. Existe alguma "versão" encontrada em todos os sistemas do tipo Unix? Como, você sabe, vi simples? O padrão awk suporta a opção -F?

    
por Der Hochstapler 27.11.2009 / 10:49

5 respostas

31

awk - o mais comum e será encontrado na maioria dos sistemas semelhantes ao Unix, versão mais antiga e inferior aos mais recentes.

mawk - implementação rápida do AWK cujo código base é baseado em um interpretador de código de bytes.

nawk - enquanto a linguagem AWK estava sendo desenvolvida, os autores lançaram uma nova versão (daí o n - n ew awk) para evitar confusão. Pense nisso como o Python 3.0 do AWK.

gawk - abreviado de GNU awk. A única versão na qual os desenvolvedores tentaram adicionar suporte ao i18n. Permitiu que os usuários escrevessem suas próprias bibliotecas compartilhadas C para estendê-lo com seus próprios "plug-ins". Esta versão é a implementação padrão para o Linux, o AWK original foi escrito para o Unix v7.

Existem outras versões como jawk (implementação java), bwk (implementação de Brian W. Kernighan) e assim por diante.

    
por 27.11.2009 / 11:17
5

Você pode usar apenas awk . Ele é definido pelo POSIX e, portanto, deve existir em todos os sistemas compatíveis com POSIX.

O parâmetro -F é obrigatório por esse também.

    
por 27.11.2009 / 12:35
1

Primeiro, a resposta rápida:

Você não precisa se incomodar: o awk do seu sistema é apenas um link simbólico para mawk ou gawk E, o mais importante: todas as três versões, awk , mawk e gawk são completamente compatível. Existe (dito ser) uma diferença na velocidade entre awk / gawk e mawk sendo a (dita ser) mais rápida.

A única exceção é nawk , que carece de alguma funcionalidade, mas as chances de encontrar essa na natureza são bastante escassas.

    
por 15.05.2014 / 13:46
0

awk estará em praticamente todos os sistemas baseados em * NIX, mas as especificidades exatas do que ele suporta mudarão ligeiramente, pois é totalmente possível que ele seja simplesmente vinculado a uma versão diferente de como /bin/sh é frequentemente vinculado para um shell específico, geralmente bash ou um de seus derivados. (Para o registro, eu também conheço muitas máquinas onde vi é linkado simbolicamente para vim também.)

    
por 27.11.2009 / 11:01
0

A Página AWK da Wikipedia é uma boa referência inicial para começar a entender o AWK.
A opção Separador de campos ' -F ' é compatível com todas as variantes de AWK - afaik.

    
por 27.11.2009 / 11:11

Tags