Cách sử dụng lệnh readarray để đọc mảng 2D trong Bash

Cach Su Dung Lenh Readarray De Doc Mang 2d Trong Bash



Bash là một ngôn ngữ shell script phổ biến được sử dụng trong các hệ điều hành Linux và Unix. Nó cung cấp một tập hợp các lệnh và tính năng phong phú giúp dễ dàng tự động hóa các tác vụ lặp đi lặp lại. 'readarray' là một trong những lệnh hữu ích nhất trong Bash. Với lệnh này, các dòng từ một tệp có thể được đọc thành một mảng 2D. Trong bài đăng này, chúng ta sẽ tìm hiểu cách đọc các dòng từ tệp vào mảng 2D bằng cách sử dụng lệnh “readarray” của Bash.

Sử dụng 'readarray' trong Bash

Lệnh 'readarray' đọc các dòng từ một tệp hoặc đầu vào tiêu chuẩn và gán chúng cho một mảng. Cú pháp sử dụng 'readarray' như sau:







sắp xếp lại [ -d CHIA SẺ ] [ -n ĐẾM ] [ - NGUỒN GỐC ] [ -s ĐẾM ] [ -t ] mảng


Các tùy chọn có sẵn cho lệnh 'readarray' là:



'-d CHIA SẺ': Đặt dấu phân cách để sử dụng khi chia dòng thành các phần tử mảng và theo mặc định, dấu phân cách là một ký tự xuống dòng.



'-n ĐẾM': Chỉ định số dòng tối đa để đọc vào mảng.





'-O GỐC' : Đặt chỉ số bắt đầu của mảng.

'-s COUNT': Chỉ định số dòng cần bỏ qua trước khi đọc vào mảng.



'-t': Xóa ký tự xuống dòng ở cuối mỗi dòng được đọc vào mảng.

Đây là một ví dụ về việc sử dụng 'readarray' để đọc các dòng từ một tệp thành một mảng 2D và tôi đã tạo một testfile.txt có nội dung là:

1 2 3
4 5 6
7 số 8 9


Vì vậy, đây là tập lệnh bash hoàn chỉnh thể hiện việc sử dụng lệnh 'readarray':

#!/bin/bash
# Đọc các dòng từ tệp vào mảng
sắp xếp lại -t dòng < testfile.txt
# Khai báo mảng 2D 3 hàng 3 cột
tuyên bố -MỘT mảng
# Lặp lại các dòng và chia mỗi dòng thành các phần tử
Tôi TRONG ' ${!lines[@]} ' ; LÀM
NẾU = '' đọc -r -Một yếu tố <<< ' ${dòng[i]} '
j TRONG ' ${!elements[@]} ' ; LÀM
nếu như [ [ -N ' ${phần tử[j]} ' ] ] ; sau đó
mảng [ $ tôi , $j ] = ${phần tử[j]}

xong
xong
# In mảng
( ( Tôi = 0 ;Tôi < 3 ;i++ ) ) ; LÀM
( ( j = 0 ;j < 3 ;j++ ) ) ; LÀM
tiếng vang -N ' ${mảng[$i,$j]} '
xong
tiếng vang
xong


Ở đây, trước tiên tôi đã khai báo một mảng 2D có tên là 'mảng' và sau đó sử dụng lệnh 'readarray' để đọc các dòng từ tệp có tên 'testfile.txt' vào mảng 'dòng'. Tiếp theo, mã lặp lại trên mảng 'dòng' và chia từng dòng thành các phần tử bằng cách sử dụng lệnh 'IFS' và 'read'.

Sau đó, nó lưu trữ các phần tử trong mảng 2D 'mảng' và sau đó sử dụng lệnh đọc để chia từng dòng thành các phần tử. Bây giờ, mỗi phần tử được gán cho phần tử tương ứng trong mảng 'mảng' và cuối cùng, nội dung của mảng 'mảng' sử dụng các vòng lặp for lồng nhau được in ra.

Phần kết luận

Lệnh 'readarray' giúp dễ dàng thao tác một lượng lớn dữ liệu trong các tập lệnh Bash. Bằng cách làm theo các ví dụ được cung cấp trong bài viết này, bạn có thể bắt đầu sử dụng 'readarray' trong tập lệnh Bash của riêng mình để đọc các dòng từ tệp và xử lý chúng thành mảng 2D.