Bash skriptēšana — sadalīta virkne

Šajā rakstā mēs apspriedīsim, kā sadalīt virknes bash skriptā.

Vienas virknes sadalīšanu vairākās virknēs sauc par virknes sadalīšanu. Daudzām programmēšanas valodām ir iebūvēta funkcija, lai veiktu virkņu sadalīšanu, bet bash nav iebūvētas funkcijas, kas to darītu. Ir dažādas metodes, kā veikt sadalītu virkni bash. Apskatīsim visas metodes pa vienam ar piemēriem.

1. metode: IFS mainīgā izmantošana

$IFS (Internal Field Separator) ir īpašs apvalka mainīgais. To izmanto, lai piešķirtu norobežotāju (vienas vai vairāku rakstzīmju secību, pamatojoties uz kuru mēs vēlamies sadalīt virkni). Atdalītājs var būt jebkura vērtība vai rakstzīme, piemēram, ' ', ' ', '-' utt. Pēc vērtības piešķiršanas mainīgajam $IFS ir jānolasa virknes vērtība. Mēs varam nolasīt virkni, izmantojot opcijas “-r” un “-a”.

  • “-r”: tas nolasa atpakaļvērstās slīpsvītras () kā rakstzīmi, nevis atsoļa rakstzīmi
  • “-a”: to izmanto, lai saglabātu sadalītos vārdus masīva mainīgajā, kas tiek deklarēts pēc opcijas -a.

1. piemērs. Sadaliet virkni pēc atstarpes

Kods:

#!/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 

Izvade:

Welcome to techcodeview.com 

2. piemērs. Sadaliet virkni ar simbolu

Virkne tiek sadalīta, izmantojot simbolu @.

Kods:

#!/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 

Izvade:

Welcome to techcodeview.com !! 

2. metode: neizmantojot IFS mainīgo

Šajā metodē, lai sadalītu virknes datus, tiek izmantota komanda readarray ar opciju -d. “-d”: šī opcija darbojas kā IFS mainīgais, lai definētu norobežotāju.

1. piemērs. Sadaliet virkni pēc atstarpes

Kods:

#!/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 

Tagad apskatīsim, kā skripts darbojas:

  • Skripts nosaka vērtību text> Laipni lūdzam vietnē techcodeview.com.
  • The readarray> komanda sadala virkni masīvā, izmantojot atstarpi kā atdalītāju, kā rezultātā tiek izveidots masīvs strarr> satur šādus elementus: Laipni lūdzam vietnē techcodeview.com.
  • For cilpa atkārtojas pa katru elementu strarr> masīvs.
  • Tas izdrukā katru elementu pa vienam atsevišķās rindās.

Izvade:

Welcome to techcodeview.com 

2. piemērs: sadalīšana, izmantojot a resnās zarnas kā a norobežotājs

Kods:

#!/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 

Izvade:

Welcome to techcodeview.com 

3. metode: sadaliet virkni ar vairāku rakstzīmju atdalītāju

Šajā metodē mainīgais tiek izmantots, lai saglabātu virknes datus, un cits mainīgais tiek izmantots vairāku rakstzīmju norobežotāju datu glabāšanai. Tiek deklarēts arī masīva mainīgais, lai saglabātu sadalīto virkni.

Kods:

# 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 

Izvade:

Romy Pushkar Nikhil Rinkle