Tôi mới bắt đầu học awk và tôi hơi bối rối về tất cả các phiên bản xung quanh. Có "phiên bản" nào được tìm thấy trên tất cả các hệ thống giống Unix không? Giống như, bạn biết, đồng bằng vi? Có awk tiêu chuẩn hỗ trợ tùy chọn -F?
Tôi mới bắt đầu học awk và tôi hơi bối rối về tất cả các phiên bản xung quanh. Có "phiên bản" nào được tìm thấy trên tất cả các hệ thống giống Unix không? Giống như, bạn biết, đồng bằng vi? Có awk tiêu chuẩn hỗ trợ tùy chọn -F?
Câu trả lời:
awk - phổ biến nhất và sẽ được tìm thấy trên hầu hết các hệ thống giống Unix, phiên bản cũ nhất và kém hơn các hệ thống mới hơn.
mawk - triển khai AWK nhanh mà cơ sở mã của nó dựa trên trình thông dịch mã byte.
nawk - trong khi ngôn ngữ AWK đang được phát triển, các tác giả đã phát hành một phiên bản mới (do đó là n - n ew awk) để tránh nhầm lẫn. Hãy nghĩ về nó giống như Python 3.0 của AWK.
gawk - viết tắt từ GNU awk. Phiên bản duy nhất mà các nhà phát triển đã cố gắng thêm hỗ trợ i18n. Cho phép người dùng viết thư viện chia sẻ C của riêng họ để mở rộng nó bằng "trình cắm" của riêng họ. Phiên bản này là bản triển khai tiêu chuẩn cho Linux, AWK ban đầu được viết cho Unix v7.
Có các phiên bản khác như jawk (triển khai java), bwk (triển khai của Brian W. Kernighan), v.v.
file /etc/alternatives/awk
trở lạisymbolic link to /usr/bin/mawk
Bạn chỉ có thể sử dụng awk
. Nó được định nghĩa bởi POSIX và do đó phải tồn tại trên tất cả các hệ thống tuân thủ POSIX.
Các -F
tham số được bắt buộc bởi đó là tốt.
gensub()
, kiểm tra với awk
-> gawk
và nghĩ rằng bạn tốt để đi ...
gawk --posix
để làm cho gawk hoạt động theo tiêu chuẩn POSIX. Nó cũng kiểm tra kịch bản của bạn theo tiêu chuẩn. Bạn có thể sử dụng awk --posix '' 2>/dev/null
trong Ubuntu bất kể là gì, nếu gawk, mawk hoặc awk gốc được sử dụng như awk, nhưng tùy chọn posix chỉ được nhận ra bởi gawk. --poseix phải là lựa chọn cuối cùng cho bản gốc-awk. Bạn có thể sử dụng awk -W posix ''
với gawk và mawk.
mawk --posix ''
thất bại, nếu bạn sử dụng mawk 1.3.3, nhưng thành công với thông báo lỗi, nếu bạn sử dụng mawk 1.3.4
awk
sẽ có mặt trên mọi hệ thống dựa trên * NIX, nhưng các chi tiết cụ thể chính xác về những gì nó hỗ trợ sẽ thay đổi đôi chút vì nó hoàn toàn có thể /bin/sh
được liên kết với một phiên bản khác giống như cách thường được liên kết với một vỏ cụ thể, thường bash
hoặc một trong dẫn xuất của nó. (Đối với bản ghi, tôi cũng biết rất nhiều máy móc vi
được liên kết vim
với nhau.)
Trang Wikipedia AWK là một tài liệu tham khảo khởi đầu tốt để bắt đầu hiểu AWK.
Các Dòng Separator tùy chọn ' -F
' được hỗ trợ trong tất cả các biến thể của AWK - afaik.
/usr/bin/awk
sẽ chạy nawk, hoặc gawk hoặc BusyBox awk (tương tự như hành vi với gawk).