Bash split streng i matrise

Bash split streng i matrise
Du kan finne deg selv i mange situasjoner der du må dele strengverdier i matriser eller andre datastrukturer mens du jobber med et bash -skript i et Linux -system. Her må du fjerne at bash ikke gir oss den innebygde delte funksjonen for å dele opp en hvilken som helst streng. Men det er alltid et alternativ til slike problemer. Derfor vil vi bruke avgrenserne til å konvertere eller dele noen strenger til en matrise. La oss begynne å se på noen eksempler i Ubuntu 20.04. Åpne skallterminalen først ved hjelp av “Ctrl+Alt+T” på skrivebordet.

Eksempel 01

Vi har erklært en "STR" -variabel i skallet med en strengverdi i den. Her brukte vi "IFS" -variabelen som en avgrenser for å dele en streng "STR". Avgrenseren “IFS” inneholder “plass” som verdien. Dette betyr at strengen vil dele seg i en matrise ved å bruke rommet mellom verdiene. Nå brukes "for" -sløyfen her for å iterere strengen "str". Innenfor "do" -klausulen vil hvert element i en "STR" -variabel vises som en matrise. Etter at sløyfen er avsluttet, viser terminalen strengen i en matriseform i henhold til bildet nedenfor.

Eksempel 02

La oss ha et annet eksempel for å få litt annen produksjon. Du kan se tydelig at strengen inneholder "," karakter etter hvert ord i den. Denne spesielle karakteren vil bli brukt som avgrensning. Så vi har erklært "", som en verdi for "IFS" -variabelen.

] "For" -sløyfen har blitt initialisert her igjen for å iterere strengvariabelen "STR". Innenfor "do" -bestemmelsen i "for" -sløyfen, har Echo -setningen blitt brukt til å vise hvert ord separat med indeksnummeret som er atskilt med "IFS" -variable verdien. Etter at sløyfen er avsluttet, viser programmet hvert strengord separat i form av en matrise. Karakteren "" er ansvarlig for denne typen splittede mellom strengverdier. Som et resultat har vi fått 5 verdier i form av en matrise fra en enkelt strengvariabel “STR”.

Eksempel 03

La oss ha et annet eksempel på å dele opp en streng til en matrise i bash -filen. Så du må opprette en bash -fil “Test.SH ”med en berøringsspørsmål i skallet, som nevnt nedenfor.

$ berøringstest.sh

Nå, åpne den nyopprettede filen i en redaktør for å skrive et bash -skript i den. Vi har brukt “GNU Nano” -redaktøren for dette formålet. Du kan også bruke VIM -redaktøren.

$ nano test.sh

Innenfor bash -filen har vi lagt til bash -utvidelsen først for å gjøre denne koden kjørbar med bash -kommandoen i skallet. Etter det er en variabel “STR” erklært og initialisert med en lang strengverdi i den. "IFS" -variabelen er blitt erklært og tildelt en verdi "plass". Leserklæringen har blitt brukt her for å lese dataene fra en strengvariabel “STR” som en matrise ved hjelp av “-RA” -flagget og lagret i den nye variabelen “ARR”.

Echo -setningen beregner og viser størrelsen på en "arr" -variabel, i.e., Array. "For" -sløyfen er her for å iterere verdiene til arrayverdier, i.e., “ARR” i en sekvens og vises i skallet ved hjelp av Printf -setningen. Programmet slutter her. Lagre koden din med “Ctrl+S” og avslutt redigereren ved å bruke snarveien “Ctrl+X”.

Kjør det nyopprettede Bash -skriptet med bash -kommandoen sammen med navnet på en bash -fil, i.e., "test.sh ”. Utførelsen av bash -skriptet viser først størrelsen på en streng "STR" I.e., Array. Etter det viste terminalen verdiene til en strengvariabel i form av en matrise, i.e., hvert ord atskilt. Totalt er 9 ord blitt vist på skallet, som vist nedenfor.

$ bash test.sh

Eksempel 04

La oss lage en annen illustrasjon for å dele en streng i en matrise. Så åpne den samme kodefilen og oppdater strengvariabelen “STR”. Vi har lagt til 6 ord i strengen atskilt med komma. Dette komma vil bli brukt som en avgrenser i "IFS" -variabelen. Leserklæringen har lest ordene til en streng “STR” som en matrise hver for seg og lagret hver og en av dem til en variabel “ARR”. Avgrenseren fungerer her og skiller hvert ord fra en streng.

De 6 ekko -utsagnene har blitt brukt her for å vise alle verdier av "ARR" -variabelen ved hjelp av indeksene for ord. Du kan se syntaksen for å ta hver verdi etter indeks i det viste bildet.

Etter å ha kjørt koden i skallet ved hjelp av en bash -spørring, har vi 6 linjer med utgang. Hvert ord i en streng lagres separat i matrisevariabelen “ARR” og vises ved hjelp av indekser.

$ bash test.sh

Eksempel 05

La oss ha vårt siste eksempel på å dele opp en strengverdi i en matrise. Denne gangen bruker vi ikke "IFS" -variabelen som en avgrenser for å dele en streng. Vi vil bruke "TR" -flagget for å gjøre det. Så åpne filen “Test.SH ”i en Nano -redaktør for å oppdatere den. Legg til bash -forlengelsen på første linje.

Strengtypevariabelen “STR” er initialisert. En annen variabel, “ARR” har brukt den variable “STR” -verdien og splittet den i deler ved å bruke “TR” -flagget. "TR" avgrenseren inneholder plass som verdien. "For" -sløyfen er itererer de variable "ARR" -verdiene ved hjelp av indekser. Hver verdi vises separat i form av en matrise.

Etter å ha kjørt bashoden, har vi fått resultatet i et array -skjema. Hvert ord i en streng “Str” blir separert og konvertert til en uavhengig verdi, i.e., Array Element.

$ bash test.sh

Konklusjon

I denne artikkelen har vi diskutert flere eksempler for å dele en strengverdi i en matrise. For dette formålet har vi brukt avgrensningen “IFS” -variabelen og “TR” -metoder. Alle eksemplene er ganske enkle å forstå og kan implementeres uten problemer.