Bash Split String Näited

Bash Split String Examples

Peame stringiandmed programmeerimisel erinevatel eesmärkidel jagama. Paljudel programmeerimiskeeltel on sisseehitatud funktsioon „split”, mis jagab stringiandmed mitmeks osaks. Kuid stringis jagamiseks pole bashis sisseehitatud funktsiooni. Tavaliselt kasutatakse stringi andmete jagamiseks ühte või mitut eraldajat. Selles juhendis on erinevaid näiteid kasutades näidatud, kuidas stringi bashiks jagada.




Muutuja $ IFS kasutamine

Stringi sõnadeks jagamiseks kasutatakse bash -is spetsiaalset kestamuutujat $ IFS. Muutujat $ IFS nimetatakse sisevälja eraldajaks (IFS), mida kasutatakse stringi jagamiseks konkreetse eraldaja määramiseks. Sõna piirid identifitseeritakse bash'is $ IFS abil. Tühik on selle muutuja eraldaja vaikeväärtus. Eraldajana võib kasutada mis tahes muid väärtusi, näiteks „ t”, „ n”, „-” jne. Pärast väärtuse määramist muutujale $ IFS saab stringi väärtust lugeda kahe valiku abil. Need on '-r' ja '-a'. Suvandit „-r” kasutatakse kaldkriipsu () lugemiseks tähemärgina, mitte põgenemismärgina ning valikut „-a” kasutatakse poolitatud sõnade salvestamiseks massiivimuutujaks. Stringi saab poolitada ilma bash-i muutujat $ IFS kasutamata. Järgmised näited näitavad erinevaid viise andmete jagamiseks (koos $ IFS -iga või ilma $ IFS -iga).



Näide-1: jagatud string põhineb

Stringi väärtus jagatakse vaikimisi tühikuga. Looge fail nimega „split1.sh” ja lisage järgmine kood. Siin kasutatakse stringiväärtuse määramiseks muutujat $ text. Koore muutujat $ IFS kasutatakse stringi andmete jagamiseks kasutatava märgi määramiseks. Selles skriptis kasutatakse eraldajana tühikut. Valikut „-a” kasutatakse koos lugemiskäsuga, et salvestada jagatud ted andmed massiivimuutujaks nimega $ strarr. Massiivi iga elemendi, $ strarr, lugemiseks kasutatakse tsüklit 'for'.



split1.sh

#!/bin/bash

#Määrake stringi väärtus
teksti='Tere tulemast LinuxHint'i!'

# Määrake eraldajaks ruum
IFS=''

#Lugege poolitatud sõnu tühikutega piiritletud massiiviks
loe -juurdestrarr<<< '$ tekst'

#Lugege kokku sõnu
viskas välja 'Seal on$ {#strarr [*]} dollaritsõnad tekstis. '

# Printige massiivi iga väärtus silmuse abil
eesttundisisse '$ {strarr [@]}';
teha
printf '$ tundi n'
tehtud

Väljund:

Käivitage skript.



$löömasplit1.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Näide 2: jagage string teatud märgi põhjal

Stringiväärtuse jagamisel võib eraldajana kasutada mis tahes spetsiifilist märki. Looge fail nimega split2.sh ja lisage järgmine kood. Siin võetakse raamatu nimi, autori nimi ja hinna väärtus, lisades sisestusstringina koma (,). Järgmisena jagatakse stringi väärtus pooleks ja salvestatakse massiivi kesta muutuja $ IFS põhjal. Massiivi elementide iga väärtus trükitakse indeksi väärtusega.

split2.sh

#!/bin/bash

#Lugege stringi väärtust
viskas välja „Sisestage raamatu nimi, autori nimi ja hind, eraldades need komaga. '
loeteksti

# Määra eraldajaks koma
IFS=','

#Lugege jagatud sõnu koma eraldaja põhjal massiiviks
loe -juurdestrarr<<< '$ tekst'

#Printige lõhestatud sõnad
viskas välja 'Raamatu nimi:$ {strarr [0]}'
viskas välja 'Autori nimi:$ {strarr [1]}'
viskas välja 'Hind:$ {strarr [2]}'

Väljund:

Käivitage skript.

$löömasplit2.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Näide-3: jagage string ilma $ IFS muutujata

See näide näitab, kuidas stringi väärtust saab jagada ilma $ IFS -i bash -i kasutamata. Looge fail nimega ' split3.sh ' ja lisage järgmine kood. Stsenaariumi järgi tekstiväärtus kooloniga (:) peab jagamise sisendiks võtma. Siin kasutatakse stringi andmete jagamiseks käsku readarray koos valikuga -d. Valikut „-d” kasutatakse käsu eraldaja märgi määratlemiseks nagu $ IFS. Järgmisena kasutatakse massiivi elementide printimiseks silmust „for”.

split3.sh

#!/bin/bash

#Lugege peastringi
viskas välja 'Sisestage string kooloniga (:) jagamiseks'
loemainstr

#Jagage string eraldaja, ':' järgi
lugemisplaat-d:-tstrarr<<< '$ mainstr'
printf ' n'

# Printige massiivi iga väärtus silmuse abil
eest (( n=0; n< $ {#strarr [*]} dollarit; n ++))
teha
viskas välja '$ {strarr [n]}'
tehtud

Väljund:

Käivitage skript.

$löömasplit3.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Näide-4: jagage string mitme tähemärgi eraldajaga

Stringi väärtus jagatakse kõigis eelmistes näidetes ühe tähemärgi eraldajaga. Selles näites on näidatud, kuidas stringi mitme tähemärgi eraldaja abil jagada. Looge fail nimega Ajad split4.sh ja lisage järgmine kood. Siin kasutatakse stringiandmete salvestamiseks muutujat $ text. Muutujat $ delimiter kasutatakse mitme tähemärgi andmete määramiseks, mida kasutatakse järgmistes lausetes eraldajana. Muutujat $ myarray kasutatakse iga poolitatud andmete salvestamiseks massiivielemendina. Lõpuks prinditakse kõik tükeldatud andmed silmuse „jaoks” abil.

split4.sh

#!/bin/bash

#Määratlege string lõhestamiseks
teksti='LearnHTMLlearnPHPlearnMySQLlearnJavascript'

#Määrake mitme tähemärgi eraldaja
eraldaja='õppida'
#Ühendage eraldaja peamise stringiga
string=$ tekst$ eraldaja

#Jagage tekst eraldaja põhjal
myarray=()
samas [[ $ string ]];teha
myarray+=( '$ {string %% '$ eraldaja'*}' )
string=$ {string#*'$ delimiter'}
tehtud

#Printige sõnad pärast jagamist
eestväärtussisse $ {myarray [@]}
teha
viskas välja -n '$ väärtus'
tehtud
printf ' n'

Väljund:

Käivitage skript.

$löömasplit4.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Järeldus:

Stringiandmed tuleb erinevateks programmeerimise eesmärkideks jagada. Selles õpetuses on näidatud erinevaid viise stringi andmete bash -i jagamiseks. Loodetavasti saavad lugejad pärast ülaltoodud näidete harjutamist jagada kõik stringiandmed vastavalt nende nõudmistele.

Lisateabe saamiseks vaadake video !