Kako uporabiti ukaz readarray za branje 2D matrike v Bashu

Kako Uporabiti Ukaz Readarray Za Branje 2d Matrike V Bashu



Bash je priljubljen skriptni jezik lupine, ki se uporablja v operacijskih sistemih Linux in Unix. Ponuja bogat nabor ukazov in funkcij, ki olajšajo avtomatizacijo ponavljajočih se opravil. 'Readarray' je eden najbolj koristnih ukazov v Bashu. S tem ukazom je mogoče vrstice iz datoteke prebrati v 2D polje. V tej objavi si bomo ogledali, kako prebrati vrstice iz datoteke v 2D matriko z Bashovim ukazom »readarray«.

Uporaba 'readarray' v Bashu

Ukaz 'readarray' prebere vrstice iz datoteke ali standardnega vnosa in jih dodeli matriki. Sintaksa za uporabo 'readarray' je naslednja:







readarray [ -d DELIM ] [ -n ŠTETI ] [ - POREKLO ] [ -s ŠTEVITE ] [ -t ] niz


Možnosti, ki so na voljo za ukaz 'readarray', so:



‘-d DELIM’: Nastavi ločilo za uporabo pri razdelitvi vrstic na elemente polja in privzeto je ločilo znak za novo vrstico.



'-n ŠTEV': Podaja največje število vrstic za branje v matriko.





'-O IZVOR' : nastavi začetni indeks matrike.

'-s COUNT': Podaja število vrstic, ki jih je treba preskočiti pred branjem v matriko.



'-t': Odstrani končni znak za novo vrstico iz vsake vrstice, prebrane v matriko.

Tukaj je primer uporabe 'readarray' za branje vrstic iz datoteke v 2D polje in za to sem ustvaril testfile.txt katere vsebina je:

1 2 3
4 5 6
7 8 9


Tukaj je torej celoten skript bash, ki prikazuje uporabo ukaza 'readarray':

#!/bin/bash
# Branje vrstic iz datoteke v matriko
readarray -t vrstice < testfile.txt
# Deklarirajte 2D matriko s 3 vrsticami in 3 stolpci
izjaviti -A niz
# Ponavljajte vrstice in vsako vrstico razdelite na elemente
za jaz v ' ${!lines[@]} ' ; narediti
IFS = ' ' prebrati -r -a elementi <<< ' ${lines[i]} '
za j v ' ${!elements[@]} ' ; narediti
če [ [ -n ' ${elements[j]} ' ] ] ; potem
niz [ $i , $j ] = ${elements[j]}
biti
Končano
Končano
# Natisnite matriko
za ( ( jaz = 0 ;jaz < 3 ;i++ ) ) ; narediti
za ( ( j = 0 ;j < 3 ;j++ ) ) ; narediti
odmev -n ' ${matrika[$i,$j]} '
Končano
odmev
Končano


Tu sem najprej deklariral 2D matriko, imenovano 'array', nato pa uporabil ukaz 'readarray' za branje vrstic iz datoteke, imenovane 'testfile.txt', v matriko 'lines'. Nato koda ponovi matriko 'lines' in vsako vrstico razdeli na elemente z ukazoma 'IFS' in 'read'.

Po tem shrani elemente v 2D matriko 'array' in nato uporabi ukaz za branje, da vsako vrstico razdeli na elemente. Zdaj je vsak element dodeljen ustreznemu elementu v matriki 'matrika' in končno se natisne vsebina matrike 'matrika' z uporabo ugnezdenih zank for.

Zaključek

Ukaz 'readarray' olajša manipulacijo velikih količin podatkov v skriptih Bash. Z upoštevanjem primerov v tem članku lahko začnete uporabljati »readarray« v lastnih skriptih Bash za branje vrstic iz datotek in njihovo obdelavo v 2D nize.