AWK - Mảng
AWK có các mảng liên kết và một trong những điều tốt nhất về nó là - các chỉ mục không cần phải là tập hợp số liên tục; bạn có thể sử dụng chuỗi hoặc số làm chỉ số mảng. Ngoài ra, không cần khai báo trước kích thước của mảng - mảng có thể mở rộng / thu nhỏ trong thời gian chạy.
Cú pháp của nó như sau:
Cú pháp
array_name[index] = value
Ở đâu array_name là tên của mảng, index là chỉ số mảng và value là bất kỳ giá trị nào được gán cho phần tử của mảng.
Tạo mảng
Để hiểu rõ hơn về mảng, chúng ta hãy tạo và truy cập các phần tử của mảng.
Thí dụ
[jerry]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange"
print fruits["orange"] "\n" fruits["mango"]
}'
Khi thực thi mã này, bạn nhận được kết quả sau:
Đầu ra
orange
yellow
Trong ví dụ trên, chúng ta khai báo mảng là fruitschỉ số của nó là tên quả và giá trị là màu của quả. Để truy cập các phần tử mảng, chúng tôi sử dụngarray_name[index] định dạng.
Xóa các phần tử mảng
Để chèn, chúng tôi đã sử dụng toán tử gán. Tương tự, chúng ta có thể sử dụngdeleteđể xóa một phần tử khỏi mảng. Cú pháp của câu lệnh xóa như sau:
Cú pháp
delete array_name[index]
Ví dụ sau đây xóa phần tử orange. Do đó lệnh không hiển thị bất kỳ đầu ra nào.
Thí dụ
[jerry]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange";
delete fruits["orange"];
print fruits["orange"]
}'
Mảng đa chiều
AWK chỉ hỗ trợ mảng một chiều. Nhưng bạn có thể dễ dàng mô phỏng một mảng nhiều chiều bằng chính mảng một chiều.
Ví dụ, dưới đây là một mảng hai chiều 3x3 -
100 200 300
400 500 600
700 800 900
Trong ví dụ trên, mảng [0] [0] lưu trữ 100, mảng [0] [1] lưu trữ 200, v.v. Để lưu trữ 100 tại vị trí mảng [0] [0], chúng ta có thể sử dụng cú pháp sau:
Cú pháp
array["0,0"] = 100
Mặc dù chúng tôi đã cho 0,0dưới dạng chỉ mục, đây không phải là hai chỉ mục. Trong thực tế, nó chỉ là một chỉ mục với chuỗi0,0.
Ví dụ sau mô phỏng một mảng 2-D:
Thí dụ
[jerry]$ awk 'BEGIN {
array["0,0"] = 100;
array["0,1"] = 200;
array["0,2"] = 300;
array["1,0"] = 400;
array["1,1"] = 500;
array["1,2"] = 600;
# print array elements
print "array[0,0] = " array["0,0"];
print "array[0,1] = " array["0,1"];
print "array[0,2] = " array["0,2"];
print "array[1,0] = " array["1,0"];
print "array[1,1] = " array["1,1"];
print "array[1,2] = " array["1,2"];
}'
Khi thực thi mã này, bạn nhận được kết quả sau:
Đầu ra
array[0,0] = 100
array[0,1] = 200
array[0,2] = 300
array[1,0] = 400
array[1,1] = 500
array[1,2] = 600
Bạn cũng có thể thực hiện nhiều thao tác trên một mảng, chẳng hạn như sắp xếp các phần tử / chỉ mục của nó. Với mục đích đó, bạn có thể sử dụngassort và asorti chức năng