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ụngassortasorti chức năng