Come posso trovare la mia versione di awk?


12

Se voglio conoscere la versione di awk ottengo quanto segue:

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

Check-in man awkvedo che il mio awk è

mawk - linguaggio di scansione dei modelli e di elaborazione del testo


--version è qualcosa che GNU ha inventato per i propri comandi, non fa parte di POSIX e la maggior parte dei comandi non supporta --version. GNU awk invece lo fa e awk - la versione fa qualcosa di sensato sul mio sistema. La distribuzione di fedorqui usa qualcosa di diverso da GNU awk per impostazione predefinita.
wingedsubmariner,

@wingedsubmariner è un'informazione interessante che hai dato. Grazie! Il mio pazzo è mawk, quindi l'inesistenza di version.
fedorqui,

Risposte:


14

In questo caso, man awkci mostra:

-Versione

mawk scrive la sua versione e il copyright su stdout e ha compilato i limiti su stderr ed esce da 0.

Nel mio caso,

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

compiled limits:
max NF             32767
sprintf buffer      2040

3

Cerco di essere più generale.

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

funziona se awk invoca mawk, gawk o original-awk disponibile per Debian / Ubuntu Linux. Si noti che -We versiondevono essere concatenati in modo che originale-awk non pensa versionè un programma. In Ubuntu Linux puoi usare sudo update-alternatives --config awkper vedere e scegliere l'implementazione invocata dal comando awk.


Non so quanto sia standard accettare l'opzione concatenata, ma non è necessario usarla nella mia esperienza: awk -W version </dev/null 2>/dev/null|awk '{print $0;nz=1}END{if(!nz)exit 1}' || awk --versiono in alternativa(s=$(awk -W version </dev/null 2>/dev/null); if [ -n "$s" ]; then printf "$s\n"; else awk --version; fi)
jarno
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.