I denne artikkelen vil vi diskutere hvordan du deler strenger i et bash-skript.
Å dele en enkelt streng i flere strenger kalles strengdeling. Mange programmeringsspråk har en innebygd funksjon for å utføre strengdeling, men det er ingen innebygd funksjon i bash for å gjøre det. Det finnes ulike metoder for å utføre delt streng i bash. La oss se alle metodene én etter én med eksempler.
streng sammenligne c#
Metode 1: Bruke IFS-variabel
$IFS(Internal Field Separator) er en spesiell skallvariabel. Den brukes til å tilordne skilletegn (en sekvens av ett eller flere tegn basert på som vi ønsker å dele strengen). Enhver verdi eller tegn som ' ', ' ', '-' osv. kan være skilletegnet. Etter å ha tildelt verdien til $IFS-variabelen, må strengverdien leses. Vi kan lese streng ved å bruke '-r' og '-a' alternativer.
- '-r': Den leste omvendt skråstrek () som et tegn i stedet for et escape-tegn
- '-a': Den brukes til å lagre de splittede ordene i en matrisevariabel som er deklarert etter -a-alternativet.
Eksempel 1: Del strengen med mellomrom
Kode:
#!/bin/bash # String text='Welcome to techcodeview.com' # Set space as the delimiter IFS=' ' # Read the split words into an array # based on space delimiter read -ra newarr <<< '$text' # Print each value of the array by using # the loop for val in '${newarr[@]}'; do echo '$val' done> Produksjon:
Welcome to techcodeview.com>
Eksempel 2: Del streng med et symbol
Streng splitt med @-symbolet.
Kode:
#!/bin/bash #String text='Welcome@[email protected]@!!' # Set @ as the delimiter IFS='@' # Read the split words into an array # based on space delimiter read -ra newarr <<< '$text' # Print each value of the array by # using the loop for val in '${newarr[@]}'; do echo '$val' done>
Produksjon:
Welcome to techcodeview.com !!>
Metode 2: Uten å bruke IFS-variabel
I denne metoden brukes readarray-kommandoen med alternativet -d for å dele strengdataene. '-d': dette alternativet fungerer som en IFS-variabel for å definere skilletegnet.
Eksempel 1: Del streng etter mellomrom
Kode:
#!/bin/bash # Read the main string text='Welcome to techcodeview.com' # Split the string by space readarray -d ' ' -t strarr <<< '$text' # Print each value of the array by # using loop for (( n=0; n < ${#strarr[*]}; n++)) do echo '${strarr[n]}' done> La oss nå se hvordan skriptet oppfører seg:
- Skriptet setter verdien av
text>til Velkommen til techcodeview.com. - De
readarray>kommandoen deler strengen i en matrise ved å bruke mellomrom som skilletegn, noe som resulterer i matrisenstrarr>som inneholder følgende elementer: Velkommen til techcodeview.com. - For-løkken itererer over hvert element i
strarr>array. - Den skriver ut hvert element ett etter ett på separate linjer.
Produksjon:
Welcome to techcodeview.com>
Eksempel 2: Del opp med en kolon som en skilletegn
Kode:
#!/bin/bash # Read the main string text='Welcome:to:techcodeview.com' # Split the string based on the delimiter, ':' readarray -d : -t strarr <<< '$text' # Print each value of the array by using # loop for (( n=0; n < ${#strarr[*]}; n++)) do echo '${strarr[n]}' done> Produksjon:
Welcome to techcodeview.com>
Metode 3: Del strengen med et skilletegn med flere tegn
I denne metoden brukes en variabel til å lagre strengdata og en annen variabel brukes til å lagre flertegnsavgrensningsdata. En matrisevariabel er også erklært for å lagre den delte strengen.
lagret programkontroll
Kode:
# Define the string to split text='HelloRomy HelloPushkar HelloNikhil HelloRinkle' # store multi-character delimiter delimiter='Hello' # Concatenate the delimiter with the # main string string=$text$delimiter # Split the text based on the delimiter newarray=() while [[ $string ]]; do newarray+=( '${string%%'$delimiter'*}' ) string=${string#*'$delimiter'} done # Print the words after the split for value in ${newarray[@]} do echo '$value ' done> Produksjon:
Romy Pushkar Nikhil Rinkle>