Bruker $ IFS -variabel
Den spesielle skallvariabelen $ IFS brukes i bash for å dele opp en streng i ord. $ IFS -variabel kalles intern feltskillelse (IFS) som brukes til å tilordne den spesifikke avgrenseren for å dele strengen. Ordgrenser er identifisert i bash av $ IFS. White Space er standard avgrensningsverdi for denne variabelen. Enhver annen verdi som '\ t', '\ n', '-' osv. Kan brukes som avgrenser. Etter å ha tilordnet verdien til $ IFS -variabel, kan strengverdien leses etter to alternativer. Disse er '-r' og '-a'. Alternativet, '-r' brukes til å lese Backslash (\) som et tegn i stedet for å unnslippe karakter og '-A' -alternativet brukes til å lagre de delte ordene i en array-variabel. Strengen kan deles uten å bruke $ IFS-variabel i bash. Ulike måter å dele opp strengdata (med $ IFS eller uten $ IFS) vises i følgende eksempler.
Eksempel-1: Delt streng basert på rom
Strengverdien er delt på hvitt rom som standard. Lag en fil som heter 'split1.sh 'og legg til følgende kode. Her brukes $ tekstvariabel til å tilordne en strengverdi. Skallvariabelen, $ IFS brukes til å tilordne tegnet som skal brukes til å dele strengdataene. Plass brukes i dette skriptet som separator. '-A' -alternativet brukes med lesekommando for å lagre de delte teddataene i en matrisevariabel som heter $ Strarr. 'For' Loop brukes til å lese hvert element i matrisen, $ Strarr.
split1.sh
#!/bin/bash
#Definer strengverdien
tekst = "Velkommen til Linuxhint"
# Angi plass som avgrenser
Ifs = "
#Read de delte ordene i en matrise basert på romavgrenser
Les -a Strarr <<< "$text"
#Count de totale ordene
ekko "Det er $ #strarr [*] ord i teksten.""
# Skriv ut hver verdi av matrisen ved å bruke loopen
for val i "$ strarr [@]";
gjøre
printf "$ val \ n"
Ferdig
Produksjon:
Kjør manuset.
$ bash split1.sh
Følgende utgang vises etter å ha kjørt skriptet.
Eksempel-2: Delt streng basert på en bestemt karakter
Enhver spesifikk tegn kan brukes som separator for å dele strengverdien. Lag en fil som heter split2.sh og legg til følgende kode. Her tas boknavn, forfatternavn og prisverdi ved å legge til komma (,) som en inngangsstreng. Deretter blir strengverdien delt og lagret i en matrise basert verdien av skallvariabelen, $ IFS. Hver verdi av matriseelementene skrives ut av indeksverdien.
split2.sh
#!/bin/bash
#Read strengverdien
ekko "Skriv inn boknavn, forfatternavn og pris ved å skille komma. ""
Les tekst
# Sett komma som avgrensning
Ifs = ','
#Read de delte ordene i en matrise basert på kommaavgrenser
Les -a Strarr <<< "$text"
#Trykk de delte ordene
ekko "Boknavn: $ Strarr [0]"
ekko "Forfatternavn: $ Strarr [1]"
ekko "Pris: $ Strarr [2]"
Produksjon:
Kjør manuset.
$ bash split2.sh
Følgende utgang vises etter å ha kjørt skriptet.
Eksempel-3: Del strengen uten $ IFS-variabel
Dette eksemplet viser hvordan strengverdien kan deles uten å bruke $ IFS i bash. Lage en fil som heter 'Split3.sh ' og legg til følgende kode. I følge skriptet, en tekstverdi med tykktarmen(:) må ta som innspill for splitting. Her brukes 'ReadArray' -kommando med -d -alternativet til å dele opp strengdataene. '-D' -alternativet brukes til å definere separatortegn i kommandoen som $ IFS. Neste, 'for' sløyfe brukes til å skrive ut arrayelementene.
Split3.sh
#!/bin/bash
#Read hovedstrengen
ekko "Skriv inn strengen med tykktarm (:) å dele"
Les mainstr
#Split strengen basert på avgrenseren, ':'
ReadArray -D: -T Strarr <<< "$mainstr"
printf "\ n"
# Skriv ut hver verdi av matrisen ved å bruke loop
for ((n = 0; n < $#strarr[*]; n++))
gjøre
ekko "$ strarr [n]"
Ferdig
Produksjon:
Kjør manuset.
$ bash split3.sh
Følgende utgang vises etter å ha kjørt skriptet.
Eksempel-4: Del strengen med en avgrensning av flere karakterer
Strengverdien er delt av en enkelt karakteravgrenser i alle tidligere eksempler. Hvordan du kan dele strengen ved å bruke flerkarakteravgrenser vises i dette eksemplet. Lag en fil som heter 'Split4.sh ' og legg til følgende kode. Her brukes $ tekstvariabel til å lagre en strengdata. $ avgrensningsvariabel brukes til å tilordne en data fra flere tegn som brukes som avgrenseren i neste uttalelser. $ MyArray-variabel brukes til å lagre hver delte teddata som et array-element. Endelig skrives alle delte teddataene ved å bruke 'for' loop.
Split4.sh
#!/bin/bash
#Definer strengen som skal deles
tekst = "learnhtmllearnphplearnmysqllearnjavaScript"
#Define Multi-karakteravgrensning
avgrensning = "Lær"
#Concatenate avgrenseren med hovedstrengen
String = $ tekst $ avgrensning
#Split teksten basert på avgrenseren
MyArray = ()
mens [[$ streng]]; gjøre
MyArray+= ("$ String %%" $ Delimiter "*")
String = $ String#*"$ Delimiter"
Ferdig
#Trykk ordene etter delingen
for verdi i $ myArray [@]
gjøre
ekko -n "$ verdi"
Ferdig
printf "\ n"
Produksjon:
Kjør manuset.
$ bash split4.sh
Følgende utgang vises etter å ha kjørt skriptet.
Strengdataene må dele opp for forskjellige programmeringsformål. Ulike måter å dele inn strengdata i bash vises i denne opplæringen. Håper, etter å ha praktisert eksemplene ovenfor, vil leserne kunne dele opp eventuelle strengdata basert på deres krav.
For mer informasjon, se videoen!