Eu apenas comecei a aprender awk e estou um pouco confuso sobre todas essas versões. Existe alguma "versão" encontrada em todos os sistemas Unix? Como, você sabe, vi simples? O awk padrão suporta a opção -F?
Eu apenas comecei a aprender awk e estou um pouco confuso sobre todas essas versões. Existe alguma "versão" encontrada em todos os sistemas Unix? Como, você sabe, vi simples? O awk padrão suporta a opção -F?
Respostas:
awk - o mais comum e será encontrado na maioria dos sistemas Unix, versão mais antiga e inferior aos sistemas mais novos.
mawk - implementação rápida do AWK cuja base de código é baseada 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 o suporte ao i18n. Permitiu que os usuários escrevessem suas próprias bibliotecas compartilhadas em C para estendê-las com seus próprios "plug-ins". Esta versão é a implementação padrão do Linux, o AWK original foi escrito para o Unix v7.
Existem outras versões como jawk (implementação em java), bwk (implementação de Brian W. Kernighan) e assim por diante.
file /etc/alternatives/awk
retornasymbolic link to /usr/bin/mawk
Você pode apenas usar awk
. É definido pelo POSIX e, portanto, deve existir em todos os sistemas em conformidade com o POSIX.
O -F
parâmetro também é obrigatório por isso .
gensub()
, o teste com awk
-> gawk
, e acho que você está pronto para ir ...
gawk --posix
para fazer o gawk funcionar de acordo com o padrão POSIX. Ele também verifica se o seu script segue o padrão. Você pode usar awk --posix '' 2>/dev/null
no Ubuntu não importa se gawk, mawk ou original-awk são usados como awk, mas a opção posix é reconhecida apenas pelo gawk. --posix deve ser a última opção para o original-awk. Você pode usar awk -W posix ''
com gawk e mawk.
mawk --posix ''
não, se você usar mawk 1.3.3, mas sucede com a mensagem de erro, se você usar mawk 1.3.4
awk
estará presente em quase todos os sistemas baseados no * NIX, mas as especificidades exatas do que ele suporta serão levemente alteradas, pois é perfeitamente possível que seja simplesmente /bin/sh
vinculado a uma versão diferente, semelhante à frequência com que está vinculada a um shell específico, geralmente bash
ou a um dos seguintes. seus derivados. (Para o registro, eu também conheço muitas máquinas nas quais também vi
está vinculado vim
.)
A página AWK da Wikipedia é uma boa referência para começar a entender o AWK.
A opção Separador de campo ' -F
' é suportada em todas as variantes do AWK - afaik.
/usr/bin/awk
rodará nawk, ou gawk, ou BusyBox awk (comportamento semelhante ao gawk).