Bash Split String Eksempler

Bash Split String Examples



Vi må dele strengdataene for forskjellige formål i programmeringen. Mange programmeringsspråk har en innebygd funksjon som heter 'split' for å dele strengen data i flere deler. Men det er ingen innebygd funksjon i bash for å dele strengen. Normalt brukes enkelt eller flere skilletegn for å dele alle strengdata. Hvordan du kan dele strengen i bash er vist i denne opplæringen ved å bruke forskjellige eksempler.








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.sh

Fø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.sh

Fø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.sh

Fø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 !