Primeri nizov razdeljenih basov

Bash Split String Examples



Pri programiranju moramo nizne podatke razdeliti za različne namene. Številni programski jeziki imajo vgrajeno funkcijo z imenom 'split' za razdelitev podatkov niza na več delov. Toda v bashu ni vgrajene funkcije za deljenje niza. Običajno se za razdelitev podatkov o nizu uporabljajo enojni ali več omejevalniki. Kako lahko razdelite niz v bash, je prikazano v tej vadnici z uporabo različnih primerov.








Uporaba spremenljivke $ IFS

Posebna spremenljivka lupine $ IFS se v bashu uporablja za razdelitev niza na besede. Spremenljivka $ IFS se imenuje Interni ločevalnik polj (IFS), ki se uporablja za dodelitev posebnega ločila za deljenje niza. Meje besed v bash določi $ IFS. Praznina je privzeta vrednost razmejevalnika za to spremenljivko. Kot ločilo lahko uporabite katero koli drugo vrednost, na primer ' t', ' n', '-' itd. Po dodelitvi vrednosti spremenljivki $ IFS lahko vrednost niza preberete z dvema možnostma. To sta '-r' in '-a'. Možnost '-r' se uporablja za branje poševnice () kot znak in ne za ubežni znak, možnost '-a' pa za shranjevanje razcepljenih besed v spremenljivko niza. Niz je mogoče razdeliti brez uporabe spremenljivke $ IFS v bash. V naslednjih primerih so prikazani različni načini razdelitve nizov podatkov (s $ IFS ali brez $ IFS).



Primer-1: Razdelite niz na podlagi

Vrednost niza je privzeto deljena s presledkom. Ustvarite datoteko z imenom 'split1.sh' in dodajte naslednjo kodo. Tu se spremenljivka $ text uporablja za dodelitev vrednosti niza. Spremenljivka lupine $ IFS se uporablja za dodelitev znaka, ki bo uporabljen za deljenje podatkov niza. V tem skriptu se kot ločilo uporablja presledek. Možnost '-a' se uporablja z ukazom za branje za shranjevanje razdeljenih podatkov v spremenljivko niza z imenom $ strarr. Zanka ‘for’ se uporablja za branje vsakega elementa matrike, $ strarr.



split1.sh





#!/bin/bash

#Določite vrednost niza
besedilo='Dobrodošli v LinuxHint'

# Nastavi prostor kot ločilo
IFS=''

#Preberite razdeljene besede v matriko na podlagi razmika
prebrati -zastrarr<<< '$ besedilo'

#Preštejte skupno število besed
vrgel ven 'Obstajajo$ {#strarr [*]}besede v besedilu. '

# Natisnite vsako vrednost matrike z uporabo zanke
zaurev '$ {strarr [@]}';
naredi
printf '$ ur n'
Končano

Izhod:

Zaženite skript.



$bashsplit1.sh

Po zagonu skripta se prikaže naslednji izhod.

Primer 2: Razdelite niz na podlagi določenega znaka

Za ločevanje vrednosti niza se lahko uporabi kateri koli poseben znak. Ustvarite datoteko z imenom split2.sh in dodajte naslednjo kodo. Tukaj se ime knjige, ime avtorja in vrednost cene vzamejo z dodajanjem vejice (,) kot vhodnega niza. Nato se vrednost niza razdeli in shrani v matriko na podlagi vrednosti spremenljivke lupine, $ IFS. Vsako vrednost elementov matrike natisne vrednost indeksa.

split2.sh

#!/bin/bash

#Preberite vrednost niza
vrgel ven 'Vnesite ime knjige, ime avtorja in ceno tako, da ločite vejico. '
prebratibesedilo

# Nastavi vejico kot ločilo
IFS=','

#Preberite razdeljene besede v matriko na podlagi ločila vejice
prebrati -zastrarr<<< '$ besedilo'

#Natisnite razdeljene besede
vrgel ven 'Ime knjige:$ {strarr [0]}'
vrgel ven 'Ime avtorja:$ {strarr [1]}'
vrgel ven 'Cena:$ {strarr [2]}'

Izhod:

Zaženite skript.

$bashsplit2.sh

Po zagonu skripta se prikaže naslednji izhod.

Primer 3: Razdelite niz brez spremenljivke $ IFS

Ta primer prikazuje, kako je mogoče vrednost niza razdeliti brez uporabe $ IFS v bash. Ustvarite datoteko z imenom ' split3.sh ’ in dodajte naslednjo kodo. Po scenariju je besedilna vrednost z dvopičjem (:) mora biti vložek za razdelitev. Tu se za razdelitev podatkov o nizu uporablja ukaz 'readarray' z možnostjo -d. Možnost '-d' se uporablja za določitev ločevalnega znaka v ukazu, na primer $ IFS. Nato se zanka 'for' uporabi za tiskanje elementov matrike.

split3.sh

#!/bin/bash

#Preberite glavni niz
vrgel ven 'Vnesite niz z dvopičjem (:) za ločitev'
prebratimainstr

#Razdelite niz na podlagi razmejevalnika, ':'
bralni niz-d:-tstrarr<<< '$ mainstr'
printf ' n'

# Natisnite vsako vrednost matrike z uporabo zanke
za (( n=0; n< $ {#strarr [*]}; n ++))
naredi
vrgel ven '$ {strarr [n]}'
Končano

Izhod:

Zaženite skript.

$bashsplit3.sh

Po zagonu skripta se prikaže naslednji izhod.

Primer 4: Niz razdelite z ločevalnikom z več znaki

Vrednost niza je v vseh prejšnjih primerih razdeljena z ločevalnikom enega znaka. V tem primeru je prikazano, kako lahko niz razdelite z ločevalnikom z več znaki. Ustvarite datoteko z imenom Časi split4.sh in dodajte naslednjo kodo. Tu se spremenljivka $ text uporablja za shranjevanje podatkov o nizu. Spremenljivka $ ločila se uporablja za dodelitev podatkov z več znaki, ki se v naslednjih stavkih uporabljajo kot razmejevalnik. Spremenljivka $ myarray se uporablja za shranjevanje vseh razdeljenih podatkov kot elementa niza. Končno se vsi razdeljeni podatki natisnejo z zanko „for“.

split4.sh

#!/bin/bash

#Določite niz, ki ga želite razdeliti
besedilo='learnHTMLlearnPHPlearnMySQLlearnJavascript'

#Določite ločilo z več znaki
ločila='učiti se'
#Povežite ločilo z glavnim nizom
vrvica=$ besediloločilo $

#Razdelite besedilo na podlagi razmejevalnika
myarray=()
medtem [[ $ string ]];naredi
mira++( '$ {string %% '$ razmejevalnik'*}' )
vrvica=$ {string#*'$ razmejevalnik'}
Končano

#Natisnite besede po razcepu
zavrednostv $ {myarray [@]}
naredi
vrgel ven -n '$ vrednost'
Končano
printf ' n'

Izhod:

Zaženite skript.

$bashsplit4.sh

Po zagonu skripta se prikaže naslednji izhod.

Zaključek:

Podatke niza je treba razdeliti za različne namene programiranja. V tej vadnici so prikazani različni načini razdelitve nizov podatkov v bash. Upam, da bodo bralci po vadbi zgornjih primerov lahko razdelili vse podatke o nizih glede na njihove zahteve.

Za več informacij si oglejte video !