Bagaimana saya bisa menemukan versi awk saya?

12

Jika saya ingin tahu versi awk saya mendapatkan yang berikut:

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

Saat check-in, man awksaya melihat bahwa cewek saya adalah

mawk - pemindaian pola dan bahasa pemrosesan teks

fedorqui
sumber
--versi adalah sesuatu yang diciptakan GNU untuk perintah mereka sendiri, itu bukan bagian dari POSIX dan kebanyakan perintah tidak mendukung --versi. Namun, GNU awk melakukan, dan awk --versi melakukan sesuatu yang masuk akal pada sistem saya. Distribusi fedorqui menggunakan sesuatu selain GNU awk secara default.
wingedsubmariner
@wingedsubmariner itu informasi menarik yang Anda berikan. Terima kasih! Awk saya adalah mawk, karenanya tidak ada version.
fedorqui

Jawaban:

14

Dalam hal ini, man awkperlihatkan kepada kami:

-W versi

mawk menulis versi dan hak ciptanya ke stdout dan mengkompilasi batasan untuk stderr dan keluar 0.

Dalam hal ini,

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

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

Saya mencoba menjadi lebih umum.

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

berfungsi apakah awk memanggil mawk, gawk atau original-awk yang tersedia untuk Debian / Ubuntu Linux. Catat itu -Wdan versionharus digabung sehingga awk-original tidak menganggapnya versionsebagai program. Di Ubuntu Linux Anda dapat menggunakan sudo update-alternatives --config awkuntuk melihat dan memilih implementasi yang dijalankan oleh perintah awk.

jarno
sumber
Saya tidak tahu bagaimana standarnya untuk menerima opsi gabungan, tetapi tidak perlu menggunakannya dalam pengalaman saya: awk -W version </dev/null 2>/dev/null|awk '{print $0;nz=1}END{if(!nz)exit 1}' || awk --versionatau sebagai alternatif(s=$(awk -W version </dev/null 2>/dev/null); if [ -n "$s" ]; then printf "$s\n"; else awk --version; fi)
jarno