Bruker $ IFS -variabel
Den spesielle skallvariabelen $ IFS brukes i bash for å dele en streng i ord. $ IFS -variabelen kalles Internal Field Separator (IFS) som brukes til å tildele den spesifikke skilletegnet for å dele strengen. Ordgrenser er identifisert i bash av $ IFS. White space er standard avgrensningsverdi for denne variabelen. Enhver annen verdi som ‘ t’, ‘ n’, ‘-‘ etc. Kan brukes som skilletegn. Etter at verdien er tilordnet $ IFS -variabelen, kan strengverdien leses av to alternativer. Disse er ‘-r’ og ‘-a’. Alternativet ‘-r’ brukes til å lese tilbakeslag () som et tegn i stedet for å unnslippe tegn, og ‘-a’ alternativet brukes til å lagre de splittede ordene i en matrisevariabel. Strengen kan deles uten bruk av $ IFS-variabel i bash. Ulike måter å dele strengdata (med $ IFS eller uten $ IFS) er vist i de følgende eksemplene.
Eksempel-1: Del streng basert på
Strengen er som standard delt med hvitt mellomrom. Lag en fil som heter ‘split1.sh’ og legg til følgende kode. Her brukes $ tekstvariabel for å tildele en strengverdi. Skallvariabelen, $ IFS, brukes til å tildele tegnet som skal brukes til å dele strengdataene. Mellomrom brukes i dette skriptet som skilletegn. ‘-A’ alternativet brukes med lesekommando for å lagre de delte dataene i en matrisevariabel som heter $ strarr. 'For' loop brukes til å lese hvert element i matrisen, $ strarr.
splitt1.sh
#!/bin/bash
#Definer strengverdien
tekst='Velkommen til LinuxHint'
# Angi plass som skilletegn
IFS=''
#Les delingsordene inn i en matrise basert på mellomromstegn
lese -tilstrarr<<< '$ tekst'
#Tell de totale ordene
kastet ut 'Det er$ {#strarr [*]}ord i teksten. '
# Skriv ut hver verdi i matrisen ved å bruke løkken
tiltimeri '$ {strarr [@]}';
gjøre
printf '$ timer n'
gjort
Produksjon:
Kjør skriptet.
$bashsplitt1.sh
Følgende utdata vises etter at skriptet er kjørt.
Eksempel-2: Del streng basert på et bestemt tegn
Enhver spesifikk karakter kan brukes som skilletegn for å dele strengverdien. Lag en fil med navnet split2.sh og legg til følgende kode. Her tas boknavn, forfatternavn og prisverdi ved å legge til komma (,) som en inputstreng. Deretter deles strengverdien og lagres i en matrise basert på verdien til skallvariabelen, $ IFS. Hver verdi på matriseelementene skrives ut av indeksverdien.
split2.sh
#!/bin/bash#Les strengverdien
kastet ut 'Skriv inn boknavn, forfatternavn og pris ved å skille komma. '
lesetekst
# Sett komma som skilletegn
IFS=','
#Les delingsordene inn i en matrise basert på kommaavgrensning
lese -tilstrarr<<< '$ tekst'
#Skriv ut de splittede ordene
kastet ut 'Boknavn:$ {strarr [0]}'
kastet ut 'Forfatternavn:$ {strarr [1]}'
kastet ut 'Pris:$ {strarr [2]}'
Produksjon:
Kjør skriptet.
$bashsplit2.shFølgende utdata vises etter at skriptet er kjørt.
Eksempel-3: Del strengen uten $ IFS-variabel
Dette eksemplet viser hvordan strengverdien kan deles uten å bruke $ IFS i bash. Lag en fil som heter ‘ split3.sh ’ og legg til følgende kode. I følge manuset, en tekstverdi med kolon (:) må ta som input for splitting. Her brukes kommandoen 'readarray' med -d for å dele strengdataene. ‘-D’ alternativet brukes til å definere skilletegnet i kommandoen som $ IFS. Deretter brukes 'for' loop til å skrive ut matriseelementene.
split3.sh
#!/bin/bash#Les hovedstrengen
kastet ut 'Skriv inn strengen med kolon (:) for å dele'
lesemainstr
#Split strengen basert på skilletegnet, ':'
readarray-d:-tstrarr<<< '$ mainstr'
printf ' n'
# Skriv ut hver verdi i matrisen ved å bruke loop
til (( n=0; n< $ {#strarr [*]}; n ++))
gjøre
kastet ut '$ {strarr [n]}'
gjort
Produksjon:
Kjør skriptet.
$bashsplit3.shFølgende utdata vises etter at skriptet er kjørt.
Eksempel-4: Del strengen med en skilletegn på flere tegn
Strengverdien er delt med en enkelt skilletegn i alle tidligere eksempler. Hvordan du kan dele strengen ved å bruke skilletegn med flere tegn, er vist i dette eksemplet. Lag en fil med navnet Tidene splittes4.sh og legg til følgende kode. Her brukes $ tekstvariabel for å lagre en strengdata. $ delimiter-variabel brukes til å tildele data med flere tegn som brukes som skilletegn i de neste setningene. $ myarray-variabelen brukes til å lagre hver splittede data som et array-element. Til slutt skrives alle delte data ut ved å bruke 'for' loop.
split4.sh
#!/bin/bash#Definer strengen som skal deles
tekst='learnHTMLlearnPHPlearnMySQLlearnJavascript'
#Definer skilletegn for flere tegn
avgrensning='lære'
#Koble sammen skilletegnet med hovedstrengen
streng=$ tekst$ avgrensning
#Del teksten basert på skilletegn
myarray=()
samtidig som [[ $ streng ]];gjøre
myarray+=( '$ {string %% '$ delimiter'*}' )
streng=$ {string#*'$ delimiter'}
gjort
#Skriv ut ordene etter splittelsen
tilverdii $ {myarray [@]}
gjøre
kastet ut -n '$ verdi'
gjort
printf ' n'
Produksjon:
Kjør skriptet.
$bashsplit4.shFølgende utdata vises etter at skriptet er kjørt.
Konklusjon:
Strengdataene må deles for forskjellige programmeringsformål. Ulike måter å dele strengdata på i bash er vist i denne opplæringen. Håper, etter å ha praktisert eksemplene ovenfor, vil leserne kunne dele alle strengdata basert på deres krav.
For mer informasjon se videoen !