Jak mogę znaleźć moją wersję awk?

10

Jeśli chcę poznać wersję awk, otrzymuję:

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

Sprawdzam man awk, widzę, że mój awk jest

mawk - język skanowania wzorów i przetwarzania tekstu

fedorqui
źródło
--version jest czymś wymyślonym przez GNU dla własnych poleceń, nie jest częścią POSIX i większość poleceń nie obsługuje --version. GNU awk tak robi, a awk --version robi coś sensownego w moim systemie. Dystrybucja fedorqui domyślnie używa czegoś innego niż GNU awk.
wingedsubmariner
@wingedsubmariner, który podałeś. Dzięki! Mój awk jest mawk, stąd nieistnienie version.
fedorqui

Odpowiedzi:

9

W tym przypadku man awkpokazuje nam:

-W wersja

mawk zapisuje swoją wersję i prawa autorskie na stdout i skompilował ograniczenia na stderr i kończy 0.

W moim przypadku,

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

compiled limits:
max NF             32767
sprintf buffer      2040
fedorqui
źródło
3

Staram się być bardziej ogólny.

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

działa niezależnie od tego, czy awk wywołuje mawk, gawk czy original-awk dostępne dla systemu Debian / Ubuntu Linux. Zauważ, że -Wi versionmuszą być połączone, aby original-awk nie uważał versionza program. W systemie Ubuntu Linux możesz użyć, sudo update-alternatives --config awkaby zobaczyć i wybrać implementację wywoływaną przez polecenie awk.

jarno
źródło
Nie wiem, jak standardem jest akceptacja połączonej opcji, ale nie jest konieczne używanie jej w moim doświadczeniu: awk -W version </dev/null 2>/dev/null|awk '{print $0;nz=1}END{if(!nz)exit 1}' || awk --versionlub alternatywnie(s=$(awk -W version </dev/null 2>/dev/null); if [ -n "$s" ]; then printf "$s\n"; else awk --version; fi)
jarno