Bash Split String Exempel

Bash Split String Examples



Vi måste dela strängdata för olika ändamål i programmeringen. Många programmeringsspråk har en inbyggd funktion som heter 'split' för att dela strängdata i flera delar. Men det finns ingen inbyggd funktion i bash för att dela strängen. Normalt används en eller flera avgränsare för att dela strängdata. Hur du kan dela strängen i bash visas i den här självstudien med hjälp av olika exempel.








Använda $ IFS -variabel

Den speciella skalvariabeln $ IFS används i bash för att dela upp en sträng i ord. $ IFS -variabeln kallas Internal Field Separator (IFS) som används för att tilldela den specifika avgränsaren för att dela strängen. Ordgränser identifieras i bash av $ IFS. White space är standardavgränsarens värde för denna variabel. Alla andra värden som ' t', ' n', '-' etc. Kan användas som avgränsare. Efter att värdet har tilldelats $ IFS -variabel kan strängvärdet läsas av två alternativ. Dessa är '-r' och '-a'. Alternativet, '-r' används för att läsa backslash () som ett tecken snarare än escape-tecken och '-a' alternativet används för att lagra de delade orden i en array-variabel. Strängen kan delas upp utan att använda $ IFS-variabel i bash. Olika sätt att dela strängdata (med $ IFS eller utan $ IFS) visas i följande exempel.



Exempel-1: Delad sträng baserad på

Strängvärdet är som standard delat med vitt utrymme. Skapa en fil med namnet ‘split1.sh’ och lägg till följande kod. Här används $ textvariabel för att tilldela ett strängvärde. Skalvariabeln, $ IFS används för att tilldela tecknet som ska användas för att dela strängdata. Mellanslag används i detta skript som separator. '-A' -alternativet används med läskommando för att lagra delade data i en matrisvariabel som heter $ strarr. 'For' loop används för att läsa varje element i arrayen, $ strarr.



split1.sh





#!/bin/bash

#Definiera strängvärdet
text='Välkommen till LinuxHint'

# Ange utrymme som avgränsare
IFS=''

#Läs in delade ord i en array baserad på rymdavgränsare
läsa -tillstrarr<<< '$ text'

#Räkna de totala orden
kastade ut 'Det finns$ {#strarr [*]}ord i texten. '

# Skriv ut varje värde i matrisen med hjälp av slingan
förtimmari '$ {strarr [@]}';
do
printf '$ timmar n'
Gjort

Produktion:

Kör skriptet.



$våldsamt slagsplit1.sh

Följande utdata visas efter att manuset har körts.

Exempel 2: Dela sträng baserat på ett visst tecken

Alla specifika tecken kan användas som separator för att dela strängvärdet. Skapa en fil med namnet split2.sh och lägg till följande kod. Här tas boknamn, författarnamn och prisvärde genom att lägga till komma (,) som en inmatningssträng. Därefter delas strängvärdet och lagras i en array baserat på värdet på skalvariabeln, $ IFS. Varje värde för matriselementen skrivs ut av indexvärdet.

split2.sh

#!/bin/bash

#Läs strängvärdet
kastade ut 'Ange boknamn, författarnamn och pris genom att separera komma. '
läsatext

# Ställ in kommatecken som avgränsare
IFS=','

#Läs in delade ord i en matris baserad på kommaavgränsare
läsa -tillstrarr<<< '$ text'

#Skriv ut de delade orden
kastade ut 'Boknamn:$ {strarr [0]}'
kastade ut 'Författarens namn :$ {strarr [1]}'
kastade ut 'Pris :$ {strarr [2]}'

Produktion:

Kör skriptet.

$våldsamt slagsplit2.sh

Följande utdata visas efter att manuset har körts.

Exempel 3: Dela strängen utan $ IFS-variabel

Detta exempel visar hur strängvärdet kan delas upp utan att använda $ IFS i bash. Skapa en fil med namnet ‘ split3.sh ’ och lägg till följande kod. Enligt manuset, ett textvärde med kolon (:) måste ta som input för delning. Här används kommandot 'readarray' med alternativet -d för att dela strängdata. '-D' alternativet används för att definiera separator tecknet i kommandot som $ IFS. Därefter används 'for' -slingan för att skriva ut matriselementen.

split3.sh

#!/bin/bash

#Läs huvudsträngen
kastade ut 'Ange strängen med kolon (:) för att dela'
läsamainstr

#Dela strängen baserat på avgränsaren, ':'
läsarray-d:-tstrarr<<< '$ mainstr'
printf ' n'

# Skriv ut varje värde i matrisen med hjälp av loop
för (( n=0; n< $ {#strarr [*]}; n ++))
do
kastade ut '$ {strarr [n]}'
Gjort

Produktion:

Kör skriptet.

$våldsamt slagsplit3.sh

Följande utdata visas efter att manuset har körts.

Exempel-4: Dela strängen med en avgränsare med flera tecken

Strängvärdet delas upp med en enda teckenavgränsare i alla tidigare exempel. Hur du kan dela strängen med hjälp av avgränsare med flera tecken visas i detta exempel. Skapa en fil med namnet Tiderna splittras4.sh och lägg till följande kod. Här används $ textvariabel för att lagra en strängdata. $ delimiter-variabel används för att tilldela data med flera tecken som används som avgränsare i nästa uttalanden. $ myarray-variabel används för att lagra varje delad data som ett matriselement. Slutligen skrivs alla delade data ut med hjälp av 'for' -slingan.

split4.sh

#!/bin/bash

#Definiera strängen som ska delas
text='learnHTMLlearnPHPlearnMySQLlearnJavascript'

#Definiera avgränsare med flera tecken
avgränsare='lära sig'
#Koppla samman avgränsaren med huvudsträngen
sträng=$ text$ avgränsare

#Dela upp texten baserat på avgränsaren
myarray=()
medan [[ $ sträng ]];do
myarray+=( '$ {string %% '$ delimiter'*}' )
sträng=$ {string#*'$ delimiter'}
Gjort

#Skriv ut orden efter delningen
förvärdei $ {myarray [@]}
do
kastade ut -n '$ värde'
Gjort
printf ' n'

Produktion:

Kör skriptet.

$våldsamt slagsplit4.sh

Följande utdata visas efter att manuset har körts.

Slutsats:

Strängdata måste delas upp för olika programmeringsändamål. Olika sätt att dela strängdata i bash visas i den här självstudien. Hoppas att efter att ha övat på ovanstående exempel kommer läsarna att kunna dela strängdata baserat på deras krav.

För mer information titta videon !