I den här artikeln kommer vi att diskutera hur man delar strängar i ett bash-skript.
Att dela en enda sträng i flera strängar kallas strängdelning. Många programmeringsspråk har en inbyggd funktion för att utföra strängdelning men det finns ingen inbyggd funktion i bash för att göra det. Det finns olika metoder för att utföra delad sträng i bash. Låt oss se alla metoder en efter en med exempel.
Metod 1: Använda IFS-variabel
$IFS(Intern fältseparator) är en speciell skalvariabel. Den används för att tilldela avgränsaren (en sekvens av ett eller flera tecken baserat på vilka vi vill dela strängen). Alla värden eller tecken som ' ', ' ', '-' etc. kan vara avgränsaren. Efter att ha tilldelats värdet till variabeln $IFS måste strängvärdet läsas. Vi kan läsa strängar med alternativen '-r' och '-a'.
- '-r': Den läser omvänt snedstreck () som ett tecken istället för ett escape-tecken
- '-a': Den används för att lagra de splittrade orden i en arrayvariabel som deklareras efter alternativet -a.
Exempel 1: Dela strängen med mellanslag
delsträngsmetod java
Koda:
#!/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> Produktion:
Welcome to techcodeview.com>
Exempel 2: Dela sträng med en symbol
Strängdelning med @-symbol.
typscript switch
Koda:
#!/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>
Produktion:
Welcome to techcodeview.com !!>
Metod 2: Utan att använda IFS-variabel
I den här metoden används readarray-kommandot med alternativet -d för att dela strängdata. '-d': detta alternativ fungerar som en IFS-variabel för att definiera avgränsaren.
Exempel 1: Dela sträng med mellanslag
Koda:
#!/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> Låt oss nu se hur skriptet beter sig:
java arv
- Skriptet anger värdet på
text>till Välkommen till techcodeview.com. - De
readarray>kommandot delar upp strängen i en array med mellanslag som avgränsare, vilket resulterar i arrayenstrarr>som innehåller följande element: Välkommen till, techcodeview.com. - For-loopen itererar över varje element i
strarr>array. - Den skriver ut varje element ett efter ett på separata rader.
Produktion:
Welcome to techcodeview.com>
Exempel 2: Dela med hjälp av a kolon som a avgränsare
Koda:
#!/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> Produktion:
java delsträng
Welcome to techcodeview.com>
Metod 3: Dela strängen med en avgränsare med flera tecken
I denna metod används en variabel för att lagra strängdata och en annan variabel används för att lagra flerteckenavgränsningsdata. En arrayvariabel deklareras också för att lagra den delade strängen.
Koda:
# 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> Produktion:
Romy Pushkar Nikhil Rinkle>