logo

Bash scenarijus – padalinta eilutė

Šiame straipsnyje aptarsime, kaip padalyti eilutes bash scenarijuje.

Vienos eilutės padalijimas į kelias eilutes vadinamas stygų padalijimu. Daugelis programavimo kalbų turi įmontuotą funkciją, skirtą eilučių skaidymui, tačiau nėra įmontuotos bash funkcijos. Yra įvairių metodų, kaip atlikti suskaidytą eilutę bash. Pažiūrėkime visus metodus po vieną su pavyzdžiais.

1 būdas: IFS kintamojo naudojimas

$IFS (vidinis lauko skyriklis) yra specialus apvalkalo kintamasis. Jis naudojamas skyrikliui priskirti (vieno ar kelių simbolių seka, pagal kurią norime padalinti eilutę). Skirstytuvu gali būti bet kokia reikšmė arba simbolis, pvz., „ “, „ “, „-“ ir kt. Priskyrus reikšmę $IFS kintamajam, reikia nuskaityti eilutės reikšmę. Mes galime nuskaityti eilutę naudodami „-r“ ir „-a“ parinktis.



  • „-r“: jis skaito pasvirąjį brūkšnį () kaip simbolį, o ne pabėgimo simbolį
  • „-a“: jis naudojamas padalintiems žodžiams saugoti į masyvo kintamąjį, kuris deklaruojamas po parinkties -a.

1 pavyzdys: padalykite eilutę pagal tarpą

gimp kaip panaikinti pasirinkimą

Kodas:

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

Išvestis:

Welcome to techcodeview.com>

2 pavyzdys: padalykite eilutę pagal simbolį

Styga padalijama naudojant @ simbolį.

js masyvas

Kodas:

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

Išvestis:

Welcome to techcodeview.com !!>

2 būdas: nenaudojant IFS kintamojo

Taikant šį metodą, eilutės duomenims padalinti naudojama komanda readarray su parinktimi -d. „-d“: ši parinktis veikia kaip IFS kintamasis, skirtas apibrėžti skirtuką.

1 pavyzdys: padalykite eilutę pagal tarpą

Kodas:

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

Dabar pažiūrėkime, kaip veikia scenarijus:

mašinraščio rinkinys
  • Scenarijus nustato reikšmętext>Sveiki atvykę į techcodeview.com.
  • Thereadarray>komanda padalija eilutę į masyvą naudodama tarpą kaip skirtuką, todėl susidaro masyvasstrarr>kuriame yra šie elementai: Sveiki atvykę į techcodeview.com.
  • Ciklas for kartojasi per kiekvieną elementąstrarr>masyvas.
  • Jis spausdina kiekvieną elementą po vieną atskirose eilutėse.

Išvestis:

Welcome to techcodeview.com>

2 pavyzdys: Padalinti naudojant a dvitaškis kaip a skyriklis

Kodas:

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

Išvestis:

java poeilutė
Welcome to techcodeview.com>

3 būdas: padalinkite eilutę kelių simbolių skyrikliu

Taikant šį metodą, kintamasis naudojamas eilutės duomenims saugoti, o kitas kintamasis naudojamas kelių simbolių skyriklio duomenims saugoti. Masyvo kintamasis taip pat deklaruojamas, kad saugotų suskaidytą eilutę.

Kodas:

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

Išvestis:

Romy Pushkar Nikhil Rinkle>