Bash Split String Voorbeelden

Bash Split String Examples



We moeten de stringgegevens voor verschillende doeleinden in de programmering splitsen. Veel programmeertalen hebben een ingebouwde functie genaamd 'split' om stringgegevens in meerdere delen te verdelen. Maar er is geen ingebouwde functie in bash om de string te verdelen. Normaal gesproken worden enkele of meerdere scheidingstekens gebruikt om tekenreeksgegevens te splitsen. Hoe u de string in bash kunt splitsen, wordt in deze zelfstudie getoond aan de hand van verschillende voorbeelden.








$IFS-variabele gebruiken

De speciale shell-variabele $IFS wordt in bash gebruikt om een ​​string in woorden te splitsen. $IFS-variabele wordt Internal Field Separator (IFS) genoemd en wordt gebruikt om het specifieke scheidingsteken toe te wijzen voor het verdelen van de string. Woordgrenzen worden in bash geïdentificeerd door $IFS. Witruimte is de standaardwaarde voor het scheidingsteken voor deze variabele. Elke andere waarde zoals ' ', ' ', '-' enz. Kan als scheidingsteken worden gebruikt. Nadat de waarde is toegewezen aan de $IFS-variabele, kan de tekenreekswaarde met twee opties worden gelezen. Dit zijn '-r' en '-a'. De optie '-r' wordt gebruikt om backslash() te lezen als een teken in plaats van een escape-teken en de optie '-a' wordt gebruikt om de gesplitste woorden op te slaan in een arrayvariabele. De string kan worden gesplitst zonder de $IFS-variabele in bash te gebruiken. Verschillende manieren om stringgegevens te splitsen (met $IFS of zonder $IFS) worden in de volgende voorbeelden getoond.



Voorbeeld-1: String splitsen op basis van

De tekenreekswaarde wordt standaard gedeeld door witruimte. Maak een bestand met de naam 'split1.sh' en voeg de volgende code toe. Hier wordt $text variabele gebruikt om een ​​stringwaarde toe te wijzen. De shell-variabele $IFS wordt gebruikt om het teken toe te wijzen dat zal worden gebruikt voor het verdelen van de stringgegevens. In dit script wordt spatie gebruikt als scheidingsteken. De optie '-a' wordt gebruikt met de leesopdracht om de gesplitste gegevens op te slaan in een arrayvariabele met de naam $strarr. 'for'-lus wordt gebruikt om elk element van de array te lezen, $ strarr.



split1.sh





#!/bin/bash

#Definieer de tekenreekswaarde
tekst='Welkom bij LinuxHint'

# Stel spatie in als scheidingsteken
IFS=''

#Lees de gesplitste woorden in een array op basis van een spatiescheidingsteken
lezen -totstrarr<<< '$tekst'

#Tel het totaal aantal woorden
gooide uit 'Er zijn${#strarr[*]}woorden in de tekst.'

# Druk elke waarde van de array af met behulp van de lus
vooruurin '${strarr[@]}';
doen
printf '$ uurN'
gedaan

Uitgang:

Voer het script uit.



$bashsplit1.sh

De volgende uitvoer verschijnt na het uitvoeren van het script.

Voorbeeld-2: String splitsen op basis van een bepaald teken

Elk specifiek teken kan worden gebruikt als scheidingsteken voor het delen van de tekenreekswaarde. Maak een bestand met de naam split2.sh en voeg de volgende code toe. Hier worden boeknaam, auteursnaam en prijswaarde genomen door komma(,) als invoertekenreeks toe te voegen. Vervolgens wordt de tekenreekswaarde gesplitst en opgeslagen in een array op basis van de waarde van de shell-variabele $IFS. Elke waarde van de array-elementen wordt afgedrukt door de indexwaarde.

split2.sh

#!/bin/bash

#Lees de tekenreekswaarde
gooide uit 'Voer boeknaam, auteursnaam en prijs in door komma's te scheiden. '
lezentekst

# Stel komma in als scheidingsteken
IFS=','

#Lees de gesplitste woorden in een array op basis van kommascheidingsteken
lezen -totstrarr<<< '$tekst'

#Print de gesplitste woorden
gooide uit 'Boek naam:${strarr[0] }'
gooide uit 'Auteur naam :${strarr[1]}'
gooide uit 'Prijs :${strarr[2]}'

Uitgang:

Voer het script uit.

$bashsplit2.sh

De volgende uitvoer verschijnt na het uitvoeren van het script.

Voorbeeld-3: de string splitsen zonder $IFS-variabele

Dit voorbeeld laat zien hoe de tekenreekswaarde kan worden verdeeld zonder $IFS in bash te gebruiken. Maak een bestand met de naam ' split3.sh ’ en voeg de volgende code toe. Volgens het script een tekstwaarde met de dubbele punt (:) moet nemen als invoer voor het splitsen. Hier wordt de opdracht 'readarray' met de optie -d gebruikt om de stringgegevens te splitsen. De optie '-d' wordt gebruikt om het scheidingsteken in de opdracht te definiëren, zoals $IFS. Vervolgens wordt de 'for'-lus gebruikt om de array-elementen af ​​te drukken.

split3.sh

#!/bin/bash

#Lees de hoofdstring
gooide uit 'Voer de string in met dubbele punt (:) om te splitsen'
lezenbelangrijkste

#Split de tekenreeks op basis van het scheidingsteken ':'
leesarray-NS:-tstrarr<<< '$mainstr'
printf 'N'

# Druk elke waarde van de array af met behulp van lus
voor (( N=0; N< ${#strarr[*]}; n++))
doen
gooide uit '${strarr[n]}'
gedaan

Uitgang:

Voer het script uit.

$bashsplit3.sh

De volgende uitvoer verschijnt na het uitvoeren van het script.

Voorbeeld 4: Splits de tekenreeks met een scheidingsteken van meerdere tekens

De tekenreekswaarde wordt in alle voorgaande voorbeelden gesplitst door een scheidingsteken van één teken. In dit voorbeeld wordt getoond hoe u de tekenreeks kunt splitsen met behulp van een scheidingsteken van meerdere tekens. Maak een bestand met de naam Times split4.sh en voeg de volgende code toe. Hier wordt $text variabele gebruikt om een ​​string data op te slaan. $delimiter-variabele wordt gebruikt om gegevens van meerdere tekens toe te wijzen die als scheidingsteken in de volgende instructies worden gebruikt. $myarray variabele wordt gebruikt om elke gesplitste data op te slaan als een array-element. Ten slotte worden alle gesplitste gegevens afgedrukt met behulp van een 'for'-lus.

split4.sh

#!/bin/bash

#Definieer de te splitsen string
tekst='lerenHTMLlerenPHPlearnMySQLlerenJavascript'

#Definieer scheidingsteken voor meerdere tekens
scheidingsteken='leren'
#Samenvoeg het scheidingsteken met de hoofdtekenreeks
snaar=$tekst$scheidingsteken

#Split de tekst op basis van het scheidingsteken
myarray=()
terwijl [[ $string ]];doen
myarray+=( '${string%%'$delimiter'*}' )
snaar=${string#*'$delimiter'}
gedaan

#Print de woorden na de splitsing
voorwaardein ${mijnarray[@]}
doen
gooide uit -N '$waarde'
gedaan
printf 'N'

Uitgang:

Voer het script uit.

$bashsplit4.sh

De volgende uitvoer verschijnt na het uitvoeren van het script.

Conclusie:

De stringgegevens moeten worden gesplitst voor verschillende programmeerdoeleinden. In deze zelfstudie worden verschillende manieren getoond om stringgegevens in bash te splitsen. Ik hoop dat de lezers, na het oefenen van de bovenstaande voorbeelden, alle stringgegevens kunnen splitsen op basis van hun vereisten.

Kijk voor meer informatie de video !