Sådan bruges readarray-kommando til at læse 2D-array i Bash

Sadan Bruges Readarray Kommando Til At Laese 2d Array I Bash



Bash er et populært shell-scriptsprog, der bruges i Linux- og Unix-operativsystemer. Det giver et rigt sæt af kommandoer og funktioner, der gør det nemt at automatisere gentagne opgaver. 'Readarray' er en af ​​de mest nyttige kommandoer i Bash. Med denne kommando kan linjer fra en fil læses ind i et 2D-array. I dette indlæg vil vi gennemgå, hvordan man læser linjer fra en fil til et 2D-array ved hjælp af Bashs 'readarray'-kommando.

Brug af 'readarray' i Bash

Kommandoen 'readarray' læser linjer fra en fil eller standardinput og tildeler dem til et array. Syntaksen for at bruge 'readarray' er som følger:







læsearray [ -d DEL ] [ -n ANTAL ] [ - OPRINDELSEN ] [ -s ANTAL ] [ -t ] array


De tilgængelige muligheder for kommandoen 'readarray' er:



'-d DEL': Indstiller det afgrænsningstegnet, der skal bruges, når linjer opdeles i matrixelementer, og som standard er afgrænsningstegnet et nylinjetegn.



'-n COUNT': Angiver det maksimale antal linjer, der skal læses ind i arrayet.





'-O OPRINDELSE' : Indstiller startindekset for arrayet.

'-s ANTAL': Angiver antallet af linjer, der skal springes over, før der læses ind i arrayet.



'-t': Fjerner det efterfølgende nylinjetegn fra hver linje, der er læst ind i arrayet.

Her er et eksempel på at bruge 'readarray' til at læse linjer fra en fil til et 2D-array, og til det har jeg lavet en testfil.txt hvis indhold er:

1 2 3
4 5 6
7 8 9


Så her er det komplette bash-script, der demonstrerer brugen af ​​'readarray'-kommandoen:

#!/bin/bash
# Læs linjer fra en fil ind i arrayet
læsearray -t linjer < testfil.txt
# Erklærer et 2D-array med 3 rækker og 3 kolonner
erklære -EN array
# Gentag over linjerne og opdel hver linje i elementer
til jeg i ' ${!lines[@]} ' ; gør
IFS = ' ' Læs -r -en elementer <<< ' ${lines[i]} '
til j i ' ${!elements[@]} ' ; gør
hvis [ [ -n ' ${elements[j]} ' ] ] ; derefter
array [ $i , $j ] = ${elements[j]}
være
Færdig
Færdig
# Udskriv arrayet
til ( ( jeg = 0 ;jeg < 3 ;i++ ) ) ; gør
til ( ( j = 0 ;j < 3 ;j++ ) ) ; gør
ekko -n ' ${array[$i,$j]} '
Færdig
ekko
Færdig


Her har jeg først erklæret et 2D-array kaldet 'array' og derefter brugt 'readarray'-kommandoen til at læse linjer fra en fil kaldet 'testfile.txt' ind i 'lines'-arrayet. Dernæst itererer koden over 'linjer'-arrayet og opdeler hver linje i elementer ved hjælp af 'IFS'- og 'read'-kommandoerne.

Derefter gemmer den elementerne i 2D-arrayet 'array' og bruger derefter læsekommandoen til at opdele hver linje i elementer. Nu er hvert element tildelt det tilsvarende element i 'array'-arrayet, og til sidst udskrives indholdet af 'array'-arrayet ved brug af Nested for loops.

Konklusion

Kommandoen 'readarray' gør det nemt at manipulere store mængder data i Bash-scripts. Ved at følge eksemplerne i denne artikel kan du begynde at bruge 'readarray' i dine egne Bash-scripts til at læse linjer fra filer og behandle dem til 2D-arrays.