Bash Split String Eksempler

Bash Split String Examples



Vi er nødt til at opdele strengedataene til forskellige formål i programmeringen. Mange programmeringssprog har en indbygget funktion med navnet 'split' for at opdele strengen data i flere dele. Men der er ingen indbygget funktion i bash til at dele strengen. Normalt bruges en eller flere afgrænsere til at opdele alle strengdata. Hvordan du kan dele strengen i bash er vist i denne vejledning ved hjælp af forskellige eksempler.








Ved hjælp af $ IFS -variabel

Den særlige skalvariabel $ IFS bruges i bash til at opdele en streng i ord. $ IFS -variabel kaldes Internal Field Separator (IFS), der bruges til at tildele den specifikke afgrænser til opdeling af strengen. Ordgrænser identificeres bash ved $ IFS. Hvidt mellemrum er standardværdi for afgrænsning for denne variabel. Enhver anden værdi som ' t', ' n', '-' osv. Kan bruges som afgrænsning. Efter at værdien er tildelt $ IFS -variabel, kan strengværdien læses af to muligheder. Disse er '-r' og '-a'. Indstillingen '-r' bruges til at læse omvendt skråstreg () som et tegn i stedet for at undslippe tegn, og '-a' bruges til at gemme de opdelte ord i en matrixvariabel. Strengen kan deles uden brug af $ IFS-variabel i bash. Forskellige måder at opdele strengdata på (med $ IFS eller uden $ IFS) er vist i de følgende eksempler.



Eksempel-1: Opdel streng baseret på

Strengværdien er som standard divideret med hvidt mellemrum. Opret en fil med navnet 'split1.sh', og tilføj følgende kode. Her bruges $ tekstvariabel til at tildele en strengværdi. Skalvariablen, $ IFS, bruges til at tildele det tegn, der skal bruges til at dividere strengdataene. Mellemrum bruges i dette script som separator. '-A' bruges med læsningskommando til at gemme de opdelte data i en matrixvariabel med navnet $ strarr. 'For' loop bruges til at læse hvert element i arrayet, $ strarr.



split1.sh





#!/bin/bash

#Definer strengværdien
tekst='Velkommen til LinuxHint'

# Indstil mellemrum som afgrænser
IFS=''

#Læs de opdelte ord ind i en matrix baseret på mellemrum
Læs -tilskænderi<<< '$ tekst'

#Tæl de samlede ord
smed ud 'Der er$ {#strarr [*]}ord i teksten. '

# Udskriv hver værdi i arrayet ved hjælp af loop
tiltimeri '$ {strarr [@]}';
gøre
printf '$ timer n'
Færdig

Produktion:

Kør scriptet.



$bashsplit1.sh

Følgende output vises efter at scriptet er kørt.

Eksempel-2: Opdel streng baseret på et bestemt tegn

Enhver bestemt karakter kan bruges som separator til opdeling af strengværdien. Opret en fil med navnet split2.sh og tilføj følgende kode. Her tages bognavn, forfatternavn og prisværdi ved at tilføje komma (,) som en inputstreng. Dernæst deles strengværdien op og gemmes i en matrix baseret på værdien af ​​skalvariablen, $ IFS. Hver værdi af arrayelementerne udskrives med indeksværdien.

split2.sh

#!/bin/bash

#Læs strengværdien
smed ud 'Indtast bognavn, forfatternavn og pris ved at adskille komma. '
Læstekst

# Indstil komma som afgrænser
IFS=','

#Læs de opdelte ord ind i en matrix baseret på kommaafgrænsning
Læs -tilskænderi<<< '$ tekst'

#Udskriv de splittede ord
smed ud 'Bognavn:$ {strarr [0]}'
smed ud 'Forfatternavn:$ {strarr [1]}'
smed ud 'Pris:$ {strarr [2]}'

Produktion:

Kør scriptet.

$bashsplit2.sh

Følgende output vises efter at scriptet er kørt.

Eksempel-3: Opdel strengen uden $ IFS-variabel

Dette eksempel viser, hvordan strengværdien kan opdeles uden at bruge $ IFS i bash. Opret en fil med navnet ' split3.sh’ og tilføj følgende kode. Ifølge scriptet, en tekstværdi med tyktarmen (:) skal tage som input til opdeling. Her bruges kommandoen 'readarray' med -d til at opdele strengdataene. '-D' bruges til at definere separatortegnet i kommandoen som $ IFS. Dernæst bruges 'for' -loop til at udskrive arrayelementerne.

split3.sh

#!/bin/bash

#Læs hovedstrengen
smed ud 'Indtast strengen med kolon (:) for at dele'
Læsmainstr

#Opdel strengen baseret på afgrænsningen, ':'
læsearray-d:-tskænderi<<< '$ mainstr'
printf ' n'

# Udskriv hver værdi i arrayet ved hjælp af loop
til (( n=0; n< $ {#strarr [*]}; n ++))
gøre
smed ud '$ {strarr [n]}'
Færdig

Produktion:

Kør scriptet.

$bashsplit3.sh

Følgende output vises efter at scriptet er kørt.

Eksempel-4: Opdel strengen med en skilletegn på flere tegn

Strengværdien er delt med en enkelt tegnafgrænser i alle tidligere eksempler. Hvordan du kan opdele strengen ved hjælp af afgrænsning med flere tegn, er vist i dette eksempel. Opret en fil med navnet Tiderne splittes4.sh og tilføj følgende kode. Her bruges $ tekstvariabel til at gemme en strengdata. $ delimiter-variabel bruges til at tildele data med flere tegn, der bruges som afgrænsning i de næste udsagn. $ myarray variabel bruges til at gemme hver split-ted data som et array element. Endelig udskrives alle delte data ved hjælp af 'for' loop.

split4.sh

#!/bin/bash

#Definer strengen, der skal deles
tekst='learnHTMLlearnPHPlearnMySQLlearnJavascript'

#Definer afgrænsning af flere tegn
afgrænser='lære'
#Kombiner afgrænsningen med hovedstrengen
snor=$ tekst$ afgrænser

#Opdel teksten baseret på afgrænsningen
myarray=()
mens [[ $ streng ]];gøre
myarray+=( '$ {string %% '$ delimiter'*}' )
snor=$ {string#*'$ delimiter'}
Færdig

#Udskriv ordene efter splittelsen
tilværdii $ {myarray [@]}
gøre
smed ud -n '$ værdi'
Færdig
printf ' n'

Produktion:

Kør scriptet.

$bashsplit4.sh

Følgende output vises efter at scriptet er kørt.

Konklusion:

Strengdataene skal opdeles til forskellige programmeringsformål. Forskellige måder at opdele strengdata på bash er vist i denne vejledning. Håber, efter at have øvet ovenstående eksempler, vil læserne være i stand til at opdele alle strengdata baseret på deres krav.

For mere information se videoen !