Cara Menggunakan Perintah readarray Untuk Membaca Array 2D dalam Bash

Cara Menggunakan Perintah Readarray Untuk Membaca Array 2d Dalam Bash



Bash ialah bahasa skrip shell popular yang digunakan dalam sistem pengendalian Linux dan Unix. Ia menyediakan set perintah dan ciri yang kaya yang memudahkan untuk mengautomasikan tugasan yang berulang. 'readarray' adalah salah satu arahan yang paling berguna dalam Bash. Dengan arahan ini, baris daripada fail boleh dibaca ke dalam tatasusunan 2D. Dalam siaran ini, kami akan membincangkan cara membaca baris daripada fail ke dalam tatasusunan 2D menggunakan arahan 'readarray' Bash.

Menggunakan 'readarray' dalam Bash

Perintah 'readarray' membaca baris daripada fail atau input standard dan memberikannya kepada tatasusunan. Sintaks untuk menggunakan 'readarray' adalah seperti berikut:







readarray [ -d KONGSI ] [ -n COUNT ] [ - ASAL USUL ] [ -s COUNT ] [ -t ] tatasusunan


Pilihan yang tersedia untuk arahan 'readarray' ialah:



'-d SHARE': Menetapkan pembatas untuk digunakan apabila membelah baris kepada elemen tatasusunan dan secara lalai, pembatas ialah aksara baris baharu.



'-n COUNT': Menentukan bilangan maksimum baris untuk dibaca ke dalam tatasusunan.





'-O ASAL' : Menetapkan indeks permulaan tatasusunan.

‘-s COUNT’: Menentukan bilangan baris untuk dilangkau sebelum membaca ke dalam tatasusunan.



'-t': Mengalih keluar aksara baris baharu yang mengekori daripada setiap baris yang dibaca ke dalam tatasusunan.

Berikut ialah contoh menggunakan 'readarray' untuk membaca baris daripada fail ke dalam tatasusunan 2D dan untuk itu saya telah mencipta testfile.txt yang kandungannya ialah:

1 2 3
4 5 6
7 8 9


Jadi inilah skrip bash lengkap yang menunjukkan penggunaan arahan 'readarray':

#!/bin/bash
# Baca baris daripada fail ke dalam tatasusunan
readarray -t garisan < testfile.txt
# Isytihar tatasusunan 2D dengan 3 baris dan 3 lajur
mengisytiharkan -A tatasusunan
# Lelaran ke atas garisan dan bahagikan setiap baris kepada elemen
untuk i dalam ' ${!lines[@]} ' ; buat
IFS = '' membaca -r -a elemen <<< ' ${lines[i]} '
untuk j dalam ' ${!elemen[@]} ' ; buat
jika [ [ -n ' ${elemen[j]} ' ] ] ; kemudian
tatasusunan [ $i , $j ] = ${elemen[j]}
jadilah
selesai
selesai
# Cetak tatasusunan
untuk ( ( i = 0 ;i < 3 ;i++ ) ) ; buat
untuk ( ( j = 0 j < 3 ;j++ ) ) ; buat
bergema -n ' ${array[$i,$j]} '
selesai
bergema
selesai


Di sini mula-mula saya telah mengisytiharkan tatasusunan 2D yang dipanggil 'array' dan kemudian menggunakan arahan 'readarray' untuk membaca baris daripada fail yang dipanggil 'testfile.txt' ke dalam tatasusunan 'lines'. Seterusnya, kod itu berulang pada tatasusunan 'garisan' dan memisahkan setiap baris kepada elemen menggunakan arahan 'IFS' dan 'baca'.

Selepas itu, ia menyimpan elemen dalam tatasusunan 2D 'array' dan kemudian menggunakan arahan baca untuk memisahkan setiap baris kepada elemen. Kini setiap elemen diberikan kepada elemen yang sepadan dalam tatasusunan 'array' dan akhirnya, kandungan tatasusunan 'array' menggunakan nested for loops dicetak.

Kesimpulan

Perintah 'readarray' memudahkan untuk memanipulasi sejumlah besar data dalam skrip Bash. Dengan mengikuti contoh yang disediakan dalam artikel ini, anda boleh mula menggunakan 'readarray' dalam skrip Bash anda sendiri untuk membaca baris daripada fail dan memprosesnya menjadi tatasusunan 2D.