Példák a Bash felosztott karakterláncokra

Bash Split String Examples



A karakterlánc adatait fel kell osztanunk a programozás különböző céljaira. Sok programozási nyelv beépített „split” funkcióval rendelkezik, amely lehetővé teszi a karakterlánc-adatok több részre osztását. De a bash-ban nincs beépített függvény a karakterlánc felosztására. Általában egyetlen vagy több elválasztót használnak a karakterlánc -adatok felosztására. Ez a bemutató bemutatja, hogyan oszthatja fel a karakterláncot bash -ban, különböző példák használatával.








$ IFS változó használata

A $ IFS speciális héjváltozót a bash -ban használják egy karakterlánc szavakra bontására. A $ IFS változót belső mező elválasztónak (IFS) nevezik, amelyet a karakterlánc felosztásához szükséges határoló hozzárendeléséhez használnak. A szóhatárokat bash -ban a $ IFS azonosítja. A szóköz a változó alapértelmezett határolóértéke. Bármely más érték, például a „ t”, a „ n”, a „-” stb., Használható elválasztóként. Miután az értéket hozzárendelte a $ IFS változóhoz, a karakterlánc értéke kétféleképpen olvasható. Ezek „-r” és „-a”. Az „-r” opció a fordított perjel () karakterként való olvasására szolgál, nem pedig az escape karakterre, az „-a” opció pedig az osztott szavak tömbváltozóba való tárolására szolgál. A karakterlánc felosztható a $ IFS változó használata nélkül bash-ban. A karakterláncadatok felosztásának különböző módjait ($ IFS vagy $ IFS nélkül) a következő példák mutatják be.



1. példa: A karakterlánc felosztása a következők alapján:

A karakterlánc értéke alapértelmezés szerint szóközzel van osztva. Hozzon létre egy „split1.sh” nevű fájlt, és adja hozzá a következő kódot. Itt a $ text változó a karakterlánc értékének hozzárendelésére szolgál. A héjváltozó, a $ IFS a karakterlánc adatainak felosztásához használt karakter hozzárendelésére szolgál. A szkriptben a szóközt elválasztóként használják. Az „-a” opciót az olvasási paranccsal használjuk az osztott ted adatok tárolására a $ strarr nevű tömbváltozóban. A „for” ciklus a tömb minden egyes elemét olvassa, $ strarr.



split1.sh





#!/bin/bash

#Határozza meg a karakterlánc értékét
szöveg='Üdvözli a LinuxHint!'

# Állítson be teret határolónak
IFS=''

#Olvassa el a felosztott szavakat szóközzel elválasztott tömbbe
olvas -nak nekstrarr<<< '$ szöveg'

#Számolja össze a szavakat
kidobta 'Vannak$ {#strarr [*]}szavakat a szövegben. '

# Nyomtassa ki a tömb minden értékét a ciklus használatával
számáraóraban ben '$ {strarr [@]}';
tedd
printf '$ óra n'
Kész

Kimenet:

Futtassa a szkriptet.



$bashsplit1.sh

A szkript futtatása után a következő kimenet jelenik meg.

2. példa: A karakterlánc felosztása egy adott karakter alapján

Bármilyen specifikus karakter használható elválasztónak a karakterlánc értékének felosztásához. Hozzon létre egy nevű fájlt split2.sh és adja hozzá a következő kódot. Itt a könyv nevét, a szerző nevét és az ár értékét vesszővel (,) kell megadni bemeneti karakterláncként. Ezután a karakterlánc értékét felosztják, és egy tömbben tárolják, a $ IFS shell változó értéke alapján. A tömb elemeinek minden értékét az index értéke nyomtatja ki.

split2.sh

#!/bin/bash

#Olvassa el a karakterlánc értékét
kidobta 'Írja be a könyv nevét, a szerző nevét és árát vesszővel elválasztva. '
olvasszöveg

# Állítsa be a vesszőt elválasztóként
IFS=','

#Olvassa el az osztott szavakat vesszővel elválasztott tömbbe
olvas -nak nekstrarr<<< '$ szöveg'

#Nyomtassa ki a felosztott szavakat
kidobta 'A könyv neve:$ {strarr [0]}'
kidobta 'Szerző neve:$ {strarr [1]}'
kidobta 'Ár :$ {strarr [2]}'

Kimenet:

Futtassa a szkriptet.

$bashsplit2.sh

A szkript futtatása után a következő kimenet jelenik meg.

3. példa: Ossza fel a karakterláncot a $ IFS változó nélkül

Ez a példa bemutatja, hogyan osztható fel a karakterlánc értéke anélkül, hogy a $ IFS -t bash -ban használnánk. Hozzon létre egy fájlt ' split3.sh ' és adja hozzá a következő kódot. A forgatókönyv szerint szöveges érték a kettősponttal (:) a felosztáshoz inputként kell figyelembe venni. Itt a „readarray” parancs a -d opcióval használható a karakterlánc adatok felosztására. A „-d” opciót használjuk az elválasztó karakter meghatározására a parancsban, például $ IFS. Ezután a „for” ciklus a tömb elemeinek nyomtatására szolgál.

split3.sh

#!/bin/bash

#Olvassa el a fő karakterláncot
kidobta 'Írja be a karakterláncot kettősponttal (:) a felosztáshoz'
olvasmainstr

#Oszd szét a karakterláncot a határoló alapján, ':'
readarray-d:-tstrarr<<< '$ mainstr'
printf ' n'

# Nyomtassa ki a tömb minden értékét hurok használatával
számára (( n=0; n< $ {#strarr [*]}; n ++))
tedd
kidobta '$ {strarr [n]}'
Kész

Kimenet:

Futtassa a szkriptet.

$bashsplit3.sh

A szkript futtatása után a következő kimenet jelenik meg.

4. példa: Ossza fel a karakterláncot egy több karakterből álló elválasztóval

A karakterlánc értékét minden korábbi példában egyetlen karakter határoló tag osztja fel. Ebben a példában bemutatjuk, hogyan oszthatja fel a karakterláncot több karakterből álló elválasztó használatával. Hozzon létre egy nevű fájlt Az idő megosztva4.sh és adja hozzá a következő kódot. Itt a $ text változó karakterláncadatok tárolására szolgál. A $ delimiter változó több karakterből álló adatok hozzárendelésére szolgál, amelyeket a következő utasításokban elválasztóként használnak. A $ myarray változó az egyes osztott ted adatok tömb elemként való tárolására szolgál. Végül az összes osztott adatot a „for” ciklus használatával nyomtatja ki.

split4.sh

#!/bin/bash

#Határozza meg a szétválasztandó karakterláncot
szöveg='learnHTMLlearnPHPlearnMySQLlearnJavascript'

#Define több karakteres határoló
határoló='tanul'
#Conatenate a határoló a fő karakterlánccal
húr=$ szöveg$ elválasztó

#Ossza fel a szöveget az elválasztó alapján
myarray=()
míg [[ $ karakterlánc ]];tedd
myarray+=( '$ {string %% '$ delimiter'*}' )
húr=$ {string#*'$ delimiter'}
Kész

#Nyomtassa ki a szavakat a felosztás után
számáraértékban ben $ {myarray [@]}
tedd
kidobta -n '$ értékű'
Kész
printf ' n'

Kimenet:

Futtassa a szkriptet.

$bashsplit4.sh

A szkript futtatása után a következő kimenet jelenik meg.

Következtetés:

A karakterlánc -adatokat fel kell osztani különböző programozási célokra. Ebben az oktatóanyagban a karakterláncadatok bash -ban történő felosztásának különböző módjai láthatók. Reméljük, a fenti példák gyakorlása után az olvasók képesek lesznek felosztani a karakterlánc -adatokat igényük szerint.

További információkért nézze meg a videó !