--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
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.
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)
mawk
, daí a inexistência deversion
.Respostas:
Nesse caso,
man awk
mostra-nos:No meu caso,
fonte
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
-W
eversion
deve ser concatenado para que o original-awk não pense queversion
é um programa. No Ubuntu Linux, você pode usarsudo update-alternatives --config awk
para ver e escolher a implementação invocada pelo comando awk.fonte
awk -W version </dev/null 2>/dev/null|awk '{print $0;nz=1}END{if(!nz)exit 1}' || awk --version
ou alternativamente(s=$(awk -W version </dev/null 2>/dev/null); if [ -n "$s" ]; then printf "$s\n"; else awk --version; fi)