Tôi không nghĩ người đó đang hỏi "Làm cách nào để chia chuỗi và nhận độ dài của mảng kết quả?" Tôi nghĩ rằng lệnh họ cung cấp chỉ là một ví dụ về tình huống mà nó xuất hiện. Đặc biệt, tôi nghĩ người đó đang hỏi 1) Tại sao length(array)
kích hoạt lỗi và 2) Làm thế nào tôi có thể nhận được độ dài của một mảng trong awk?
Câu trả lời cho câu hỏi đầu tiên là chức năng độ dài không hoạt động trên các mảng trong tiêu chuẩn POSIX, mặc dù nó có trong GNU awk (gawk) và một vài biến thể khác. Câu trả lời cho câu hỏi thứ hai là (nếu chúng ta muốn một giải pháp hoạt động trong tất cả các biến thể của awk) để thực hiện quét tuyến tính.
Ví dụ, một hàm như thế này
function alen (a, i) {
for (i in a)
return i
}
LƯU Ý: Tham số thứ hai i
bảo đảm một số lời giải thích.
Cách bạn giới thiệu biến cục bộ trong awk là tham số hàm bổ sung và quy ước là chỉ ra điều này bằng cách thêm khoảng trống thừa trước các tham số này. Đây là được thảo luận trong số GNU Awk manual.
Nguồn
2013-07-03 00:34:48
Trên thực tế, mã của bạn làm việc cho tôi và trả về 2 như mong đợi. –
Nó hoạt động với 'gawk' nhưng không phải POSIX' awk' hoặc 'gawk --posix'. – nwk