Hvordan bruke ReadArray -kommandoen for å lese 2D -matrise i bash

Hvordan bruke ReadArray -kommandoen for å lese 2D -matrise i bash

Bash er et populært skallskriptspråk som brukes i Linux og UNIX -operativsystemer. Det gir et rikt sett med kommandoer og funksjoner som gjør det enkelt å automatisere repeterende oppgaver. 'Readarray' er en av de mest nyttige kommandoene i bash. Med denne kommandoen kan linjer fra en fil leses inn i en 2D -matrise. I dette innlegget vil vi gå over hvordan du kan lese linjer fra en fil til en 2D -matrise ved å bruke Bashs “ReadArray” -kommando.

Bruker 'readarray' i bash

Kommandoen 'ReadArray' leser linjer fra en fil eller standardinngang og tildeler dem til en matrise. Syntaksen for bruk av 'ReadArray' er som følger:

ReadArray [-D Delim] [-n Count] [-o Origin] [-S Count] [-T] Array


Alternativene som er tilgjengelige for "ReadArray" -kommandoen er:

'-D Delim': Angir avgrenseren som skal brukes når du deler linjer i matriseelementer, og som standard er avgrenseren et nytt linjekarakter.

'-n teller': Angir maksimalt antall linjer som skal leses inn i matrisen.

'-O opprinnelse': Angir startindeksen for matrisen.

'-S Count': Angir antall linjer som skal hoppes ut før du leser inn i matrisen.

'-T': Fjerner den etterfølgende newline -karakteren fra hver linje som lest inn i matrisen.

Her er et eksempel på å bruke 'readarray' for å lese linjer fra en fil til en 2D -matrise, og for det har jeg opprettet en Testfile.tekst hvis innhold er:

1 2 3
4 5 6
7 8 9


Så her er det komplette bashskriptet som demonstrerer bruken av 'ReadArray' -kommandoen:

#!/bin/bash
# Les linjer fra en fil til matrisen
ReadArray -t Lines < testfile.txt
# Erklære en 2D -matrise med 3 rader og 3 kolonner
Forklar -et utvalg
# Itererer over linjene og del hver linje i elementer
for jeg i "$ !linjer [@] "; gjør
Ifs = "Les -r -a elementer <<< "$lines[i]"
for j i "$ !elementer [@] "; gjør
if [[-n "$ elementer [j]"]]; deretter
Array [$ i, $ j] = $ elementer [j]
fi
Ferdig
Ferdig
# Skriv ut matrisen
for ((i = 0; i<3;i++)); do
for ((j = 0; j<3;j++)); do
Echo -n "$ Array [$ i, $ j]"
Ferdig
ekko
Ferdig


Her først har jeg erklært en 2D -matrise som heter 'Array' og deretter brukt 'ReadArray' -kommandoen for å lese linjer fra en fil som heter 'Testfile.txt 'inn i "linjene" -arrayen. Deretter itererer koden over "linjene" -arrayen og deler hver linje i elementer ved å bruke 'IFS' og 'Les' -kommandoer.

Etter det lagrer den elementene i 2D -matrisen 'Array' og bruker deretter lesekommandoen for å dele opp hver linje i elementer. Nå er hvert element tilordnet det tilsvarende elementet i "matrisen" -arrayen, og til slutt skrives innholdet i "matrisen" -arrayen ved å bruke nestet for løkker.

Konklusjon

Kommandoen 'ReadArray' gjør det enkelt å manipulere store datamengder i bash -skript. Ved å følge eksemplene som er gitt i denne artikkelen, kan du begynne å bruke 'Readarray' i dine egne bashskript for å lese linjer fra filer og behandle dem til 2D -matriser.