Como posso encontrar minha versão do awk?

12

Se eu quiser conhecer a versão do awk, obtenho o seguinte:

$ awk --version
awk: not an option: --version

Ao verificar man awk, vejo que meu awk é

mawk - linguagem de digitalização de padrões e processamento de texto

fedorqui
fonte
--version é algo que o GNU inventou para seus próprios comandos, não faz parte do POSIX e a maioria dos comandos não suporta +version. O GNU awk faz, no entanto, e o awk --version faz algo sensato no meu sistema. A distribuição do fedorqui usa algo diferente do GNU awk por padrão.
Wingedsubmariner
@wingedsubmariner é uma informação interessante que você forneceu. Obrigado! Meu awk é mawk, daí a inexistência de version.
Fedorqui

Respostas:

14

Nesse caso, man awkmostra-nos:

-W version

O mawk grava sua versão e direitos autorais em stdout e limites compilados em stderr e sai de 0.

No meu caso,

$ awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan

compiled limits:
max NF             32767
sprintf buffer      2040
fedorqui
fonte
3

Eu tento ser mais geral.

awk -Wversion 2>/dev/null || awk --version

funciona se o awk chama mawk, gawk ou original-awk disponível para o Debian / Ubuntu Linux. Observe que -We versiondeve ser concatenado para que o original-awk não pense que versioné um programa. No Ubuntu Linux, você pode usar sudo update-alternatives --config awkpara ver e escolher a implementação invocada pelo comando awk.

jarno
fonte
Eu não sei como padrão é para aceitar a opção concatenados, mas não é necessário, use-o na minha experiência: awk -W version </dev/null 2>/dev/null|awk '{print $0;nz=1}END{if(!nz)exit 1}' || awk --versionou alternativamente(s=$(awk -W version </dev/null 2>/dev/null); if [ -n "$s" ]; then printf "$s\n"; else awk --version; fi)
Jarno