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


--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

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.