Esimerkkejä Bash Split -merkkijonosta

Bash Split String Examples

Meidän on jaettava merkkijonotiedot eri tarkoituksiin ohjelmoinnissa. Monilla ohjelmointikielillä on sisäänrakennettu funktio nimeltä 'split' minkä tahansa merkkijonotiedon jakamiseksi useisiin osiin. Mutta bashissa ei ole sisäänrakennettua toimintoa merkkijonon jakamiseen. Yleensä merkkijonotietojen jakamiseen käytetään yksittäisiä tai useita erottimia. Kuinka voit jakaa merkkijonon bashiksi, esitetään tässä opetusohjelmassa käyttämällä erilaisia ​​esimerkkejä.




$ IFS -muuttujan käyttö

Erityistä kuoromuuttujaa $ IFS käytetään bashissa merkkijonon jakamiseen sanoiksi. $ IFS -muuttuja on nimeltään Internal Field Separator (IFS), jota käytetään määrittämään tietty erotin merkkijonon jakamista varten. $ IFS tunnistaa sanojen rajat bashissa. Välilyönti on tämän muuttujan oletuserotin. Erottimena voidaan käyttää mitä tahansa muuta arvoa, kuten ' t', ' n', '-' jne. Kun olet määrittänyt arvon $ IFS -muuttujalle, merkkijonon arvo voidaan lukea kahdella vaihtoehdolla. Nämä ovat '-r' ja '-a'. Vaihtoehtoa '-r' käytetään viivaviivan () lukemiseen merkkinä pikanäppäimen sijasta, ja -a-vaihtoehtoa käytetään jaettujen t-sanojen tallentamiseen taulukkomuuttujaan. Merkkijono voidaan jakaa, ilman $ IFS-muuttujaa bashissa. Seuraavissa esimerkeissä on esitetty erilaisia ​​tapoja jakaa merkkijonotiedot ($ IFS tai ilman $ IFS).



Esimerkki 1: Jaettu merkkijono perustuu

Merkkijonon arvo jaetaan oletuksena välilyönnillä. Luo tiedosto nimeltä 'split1.sh' ja lisää seuraava koodi. Tässä $ text -muuttujaa käytetään merkkijonon määrittämiseen. Kuorimuuttujaa $ IFS käytetään merkkijonotiedon jakamiseen käytettävän merkin määrittämiseen. Tilaa käytetään tässä skriptissä erottimena. '-A' -vaihtoehtoa käytetään lukukomennon kanssa jaetun ted-datan tallentamiseen matriisimuuttujaan nimeltä $ strarr. 'For' -silmukkaa käytetään taulukon jokaisen elementin, $ strarr, lukemiseen.



split1.sh

#!/bin/bash

#Määritä merkkijonon arvo
teksti='Tervetuloa LinuxHintiin'

# Aseta raja erottajaksi
IFS=''

#Lue jaetut sanat välilyönnin perusteella
lukea -kohteeseenstrarr<<< ''$ tekstiä''

#Laske sanojen kokonaismäärä
heitti pois 'Siellä on$ {#strarr [*]}sanoja tekstissä. ''

# Tulosta taulukon jokainen arvo käyttämällä silmukkaa
vartentuntiasisään ''$ {strarr [@]}'';
tehdä
printf ''$ tuntia n''
tehty

Lähtö:

Suorita komentosarja.



$lyödäsplit1.sh

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen.

Esimerkki 2: Jaa merkkijono tietyn merkin perusteella

Mitä tahansa merkkiä voidaan käyttää erottimena merkkijonon jakamiseen. Luo tiedosto nimeltä split2.sh ja lisää seuraava koodi. Tässä kirjan nimi, tekijän nimi ja hinta -arvo lasketaan lisäämällä pilkku (,) syöttöjonoksi. Seuraavaksi merkkijonon arvo jaetaan ja tallennetaan taulukkoon, joka perustuu shell-muuttujan $ IFS arvoon. Jokainen taulukkoelementtien arvo tulostetaan indeksin arvolla.

split2.sh

#!/bin/bash

#Lue merkkijonon arvo
heitti pois 'Kirjoita kirjan nimi, tekijän nimi ja hinta erottamalla pilkku. ''
lukeateksti

# Aseta pilkku erottimeksi
IFS=','

#Lue jaetut sanat pilkkuerottimen perusteella
lukea -kohteeseenstrarr<<< ''$ tekstiä''

#Tulosta jaetut sanat
heitti pois 'Kirjan nimi:$ {strarr [0]}''
heitti pois 'Kirjoittajan nimi:$ {strarr [1]}''
heitti pois 'Hinta:$ {strarr [2]}''

Lähtö:

Suorita komentosarja.

$lyödäsplit2.sh

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen.

Esimerkki 3: Jaa merkkijono ilman $ IFS-muuttujaa

Tämä esimerkki osoittaa, kuinka merkkijonon arvo voidaan jakaa ilman $ IFS: ää bashissa. Luo tiedosto nimeltä ' split3.sh ' ja lisää seuraava koodi. Käsikirjoituksen mukaan tekstiarvo kaksoispisteellä (:) on otettava panokseksi halkaisuun. Tässä merkkijonotietojen jakamiseen käytetään readarray -komentoa -d -vaihtoehdolla. '-D' -vaihtoehtoa käytetään määrittämään komennon erotinmerkki, kuten $ IFS. Seuraavaksi 'for' -silmukkaa käytetään array -elementtien tulostamiseen.

split3.sh

#!/bin/bash

#Lue pääjono
heitti pois 'Kirjoita merkkijono kaksoispisteellä (:) jakaaksesi'
lukeamainstr

#Split merkkijono erotin, ':'
lukusarja-d:-tstrarr<<< ''$ mainstr''
printf '' n''

# Tulosta taulukon jokainen arvo käyttämällä silmukkaa
varten (( n=0; n< $ {#strarr [*]}; n ++))
tehdä
heitti pois ''$ {strarr [n]}''
tehty

Lähtö:

Suorita komentosarja.

$lyödäsplit3.sh

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen.

Esimerkki 4: Jaa merkkijono monimerkkisellä erotimella

Merkkijonon arvo on jaettu yhdellä merkkierottimella kaikissa aiemmissa esimerkeissä. Tässä esimerkissä näytetään, kuinka merkkijono voidaan jakaa käyttämällä monimerkkistä erotinta. Luo tiedosto nimeltä Ajat split4.sh ja lisää seuraava koodi. Tässä $ text -muuttujaa käytetään merkkijonotietojen tallentamiseen. $ delimiter -muuttujaa käytetään monimerkkisten tietojen määrittämiseen, joita käytetään rajaajana seuraavissa lauseissa. Muuttujaa $ myarray käytetään jokaisen jaetun ted-datan tallentamiseen taulukkoelementtinä. Lopuksi kaikki jaetut tiedot tulostetaan käyttämällä for-silmukkaa.

split4.sh

#!/bin/bash

#Määritä jaettava merkkijono
teksti='learnHTMLlearnPHPlearnMySQLlearnJavascript'

#Määritä monimerkkinen erotin
erotin='oppia'
#Yhdistä erotin pääjonolla
merkkijono=$ tekstiä$ erotin

#Jaa teksti erottimen perusteella
myarray=()
sillä aikaa [[ $ merkkijono ]];tehdä
myarray+=( ''$ {string %% '$ delimiter'*}'' )
merkkijono=$ {string#*'$ delimiter'}
tehty

#Tulosta sanat jaon jälkeen
vartenarvosisään $ {myarray [@]}
tehdä
heitti pois -n ''$ arvo''
tehty
printf '' n''

Lähtö:

Suorita komentosarja.

$lyödäsplit4.sh

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen.

Johtopäätös:

Merkkijonotiedot on jaettava eri ohjelmointitarkoituksiin. Tässä opetusohjelmassa on esitetty erilaisia ​​tapoja jakaa merkkijonotiedot bashiin. Toivottavasti yllä olevien esimerkkien harjoittamisen jälkeen lukijat voivat jakaa minkä tahansa merkkijonotiedon vaatimuksensa perusteella.

Katso lisätietoja katsomalla video !