logo

Bash Scripting – Delt streng

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 avtext>til Velkommen til techcodeview.com.
  • Dereadarray>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 istrarr>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>