Làm thế nào tôi có thể tìm thấy phiên bản awk của tôi?


12

Nếu tôi muốn biết phiên bản của awk, tôi nhận được như sau:

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

Kiểm tra man awktôi thấy rằng awk của tôi là

mawk - ngôn ngữ quét và xử lý văn bản


--version là thứ mà GNU phát minh ra cho các lệnh của riêng họ, nó không phải là một phần của POSIX và hầu hết các lệnh không hỗ trợ --version. GNU awk tuy nhiên, và awk --version làm điều gì đó hợp lý trên hệ thống của tôi. Theo mặc định, phân phối của fedorqui sử dụng một cái gì đó không phải là GNU awk.
wingbedubmariner

@wingedsubmariner đó là một thông tin thú vị mà bạn đã cung cấp. Cảm ơn! Awk của tôi là mawk, do đó sự không tồn tại của version.
fedorqui

Câu trả lời:


14

Trong trường hợp này, man awkcho chúng ta thấy:

-W phiên bản

mawk viết phiên bản và bản quyền của nó vào thiết bị xuất chuẩn và biên dịch giới hạn cho thiết bị lỗi chuẩn và thoát 0.

Trong trường hợp của tôi,

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

compiled limits:
max NF             32767
sprintf buffer      2040

3

Tôi cố gắng để chung chung hơn.

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

hoạt động cho dù awk gọi mawk, gawk hoặc awk gốc có sẵn cho Debian / Ubuntu Linux. Lưu ý rằng -Wversionphải được nối để sao cho bản gốc không nghĩ versionlà một chương trình. Trong Ubuntu Linux, bạn có thể sử dụng sudo update-alternatives --config awkđể xem và chọn triển khai được gọi bởi lệnh awk.


Tôi không biết tiêu chuẩn chấp nhận tùy chọn kết hợp như thế nào, nhưng không cần thiết sử dụng nó theo kinh nghiệm của tôi: awk -W version </dev/null 2>/dev/null|awk '{print $0;nz=1}END{if(!nz)exit 1}' || awk --versionhoặc cách khác(s=$(awk -W version </dev/null 2>/dev/null); if [ -n "$s" ]; then printf "$s\n"; else awk --version; fi)
jarno
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.