Bash je popularan skriptni jezik ljuske koji se koristi u operativnim sustavima Linux i Unix. Omogućuje bogat skup naredbi i značajki koje olakšavaju automatizaciju zadataka koji se ponavljaju. 'Readarray' jedna je od najkorisnijih naredbi u Bashu. Pomoću ove naredbe, linije iz datoteke mogu se pročitati u 2D polje. U ovom ćemo postu objasniti kako čitati retke iz datoteke u 2D niz pomoću Bashove naredbe 'readarray'.
Korištenje 'readarray' u Bashu
Naredba 'readarray' čita retke iz datoteke ili standardnog unosa i dodjeljuje ih nizu. Sintaksa za korištenje 'readarray' je sljedeća:
readarray [ -d DIJELI ] [ -n BROJITI ] [ - PORIJEKLO ] [ -s BROJ ] [ -t ] niz
Opcije dostupne za naredbu 'readarray' su:
'-d PODIJELI': Postavlja razdjelnik koji će se koristiti prilikom dijeljenja redaka u elemente niza, a prema zadanim postavkama razdjelnik je znak novog retka.
'-n BROJ': Određuje najveći broj redaka za čitanje u polje.
'-O PORIJEKLO' : Postavlja početni indeks niza.
'-s BROJ': Određuje broj redaka koje treba preskočiti prije čitanja u polje.
'-t': Uklanja znak za novi red na kraju iz svakog retka pročitanog u nizu.
Evo primjera korištenja 'readarray' za čitanje redaka iz datoteke u 2D polje i za to sam stvorio testfile.txt čiji je sadržaj:
1 2 34 5 6
7 8 9
Dakle, ovdje je potpuna bash skripta koja demonstrira korištenje naredbe 'readarray':
# Čitaj retke iz datoteke u polje
readarray -t linije < testfile.txt
# Deklarirajte 2D niz s 3 retka i 3 stupca
proglasiti -A niz
# Iterirajte preko redaka i podijelite svaki redak na elemente
za ja u ' ${!lines[@]} ' ; čini
IFS = ' ' čitati -r -a elementi <<< ' ${lines[i]} '
za j u ' ${!elements[@]} ' ; čini
ako [ [ -n ' ${elements[j]} ' ] ] ; zatim
niz [ $i , $j ] = ${elements[j]}
biti
učinjeno
učinjeno
# Ispiši niz
za ( ( ja = 0 ;i < 3 ;i++ ) ) ; čini
za ( ( j = 0 ;j < 3 ;j++ ) ) ; čini
jeka -n ' ${niz[$i,$j]} '
učinjeno
jeka
učinjeno
Ovdje sam prvo deklarirao 2D niz pod nazivom 'array', a zatim upotrijebio naredbu 'readarray' za čitanje redaka iz datoteke pod nazivom 'testfile.txt' u niz 'lines'. Zatim, kod iterira po nizu 'lines' i dijeli svaki redak na elemente pomoću naredbi 'IFS' i 'read'.
Nakon toga pohranjuje elemente u 2D polje 'niz' i zatim koristi naredbu za čitanje da podijeli svaki redak na elemente. Sada je svaki element dodijeljen odgovarajućem elementu u nizu 'niza' i na kraju se ispisuje sadržaj niza 'niza' pomoću ugniježđenih for petlji.
Zaključak
Naredba 'readarray' olakšava manipuliranje velikim količinama podataka u Bash skriptama. Slijedeći primjere navedene u ovom članku, možete početi koristiti 'readarray' u vlastitim Bash skriptama za čitanje redaka iz datoteka i njihovu obradu u 2D nizove.