A readarray parancs használata a 2D tömb olvasásához a Bashban

A Readarray Parancs Hasznalata A 2d Tomb Olvasasahoz A Bashban



A Bash egy népszerű shell-szkriptnyelv, amelyet Linux és Unix operációs rendszerekben használnak. Parancsok és funkciók gazdag készletét kínálja, amelyek megkönnyítik az ismétlődő feladatok automatizálását. A „readarray” az egyik leghasznosabb parancs a Bashban. Ezzel a paranccsal egy fájl sorai 2D tömbbe olvashatók. Ebben a bejegyzésben áttekintjük, hogyan lehet sorokat olvasni egy fájlból 2D tömbbe a Bash „readarray” parancsával.

A „readarray” használata a Bashban

A „readarray” parancs beolvassa a sorokat egy fájlból vagy szabványos bemenetből, és hozzárendeli azokat egy tömbhöz. A „readarray” használatának szintaxisa a következő:







readarray [ -d MEGOSZTÁS ] [ -n COUNT ] [ - AZ EREDET ] [ -s COUNT ] [ -t ] sor


A „readarray” parancshoz a következő lehetőségek állnak rendelkezésre:



'-d MEGOSZTÁS': Beállítja a vonalak tömbelemekre való felosztásához használandó határolót, és alapértelmezés szerint a határoló egy újsor karakter.



„-n COUNT”: Megadja a tömbbe beolvasandó sorok maximális számát.





'-O EREDET' : Beállítja a tömb kezdő indexét.

„-s COUNT”: Meghatározza a kihagyandó sorok számát a tömbbe való beolvasás előtt.



'-t': Eltávolítja a tömbbe beolvasott minden sorból a záró újsor karaktert.

Íme egy példa a „readarray” használatára egy fájl sorainak 2D-s tömbbe történő olvasására, és ehhez létrehoztam egy tesztfájl.txt melynek tartalma:

1 2 3
4 5 6
7 8 9


Tehát itt van a teljes bash szkript, amely bemutatja a „readarray” parancs használatát:

#!/bin/bash
# Sorok beolvasása egy fájlból a tömbbe
readarray -t vonalak < tesztfájl.txt
# Deklaráljon egy 2D tömböt 3 sorból és 3 oszlopból
kijelent -A sor
# Ismételje meg a sorokat, és ossza fel az egyes sorokat elemekre
számára én ban ben ' ${!lines[@]} ' ; csináld
IFS = '' olvas -r -a elemeket <<< ' ${lines[i]} '
számára j ban ben ' ${!elements[@]} ' ; csináld
ha [ [ -n ' ${elements[j]} ' ] ] ; akkor
sor [ $i , $j ] = ${elements[j]}
lenni
Kész
Kész
# Nyomtassa ki a tömböt
számára ( ( én = 0 ;én < 3 ;i++ ) ) ; csináld
számára ( ( j = 0 ;j < 3 ;j++ ) ) ; csináld
visszhang -n ' ${array[$i,$j]} '
Kész
visszhang
Kész


Itt először deklaráltam egy „tömb” nevű 2D tömböt, majd a „readarray” paranccsal beolvastam a sorokat a „testfile.txt” nevű fájlból a „vonalak” tömbbe. Ezután a kód a „vonalak” tömbön keresztül iterál, és az „IFS” és „read” parancsok segítségével minden sort elemre oszt.

Ezt követően eltárolja az elemeket a 2D tömb „tömbjében”, majd a read paranccsal az egyes sorokat elemekre bontja. Most minden elem hozzá van rendelve a megfelelő elemhez a „tömb” tömbben, és végül a „tömb” tömb tartalma beágyazott ciklusokhoz kerül kinyomtatásra.

Következtetés

A „readarray” parancs megkönnyíti a Bash-szkriptekben nagy mennyiségű adat kezelését. Az ebben a cikkben található példák követésével elkezdheti használni a „readarray”-t saját Bash-szkriptjeiben, hogy sorokat olvasson ki fájlokból és dolgozzon fel 2D tömbökké.