Mga Halimbawa ng Bash Split String

Bash Split String Examples



Kailangan naming hatiin ang data ng string para sa iba't ibang mga layunin sa pagprogram. Maraming mga wika sa programa ang may built-in na function na pinangalanang 'split' para hatiin ang anumang data ng string sa maraming bahagi. Ngunit walang built-in na pag-andar sa bash para sa paghahati ng string. Karaniwan, ginagamit ang solong o maraming mga delimiter upang hatiin ang anumang data ng string. Kung paano mo nahahati ang string sa bash ay ipinapakita sa tutorial na ito sa pamamagitan ng paggamit ng iba't ibang mga halimbawa.








Gumagamit ng variable na $ IFS

Ang espesyal na variable ng shell na $ IFS ay ginagamit sa bash para sa paghahati ng isang string sa mga salita. Ang variable ng $ IFS ay tinatawag na Internal Field Separator (IFS) na ginagamit upang magtalaga ng tukoy na delimiter para sa paghahati ng string. Ang mga hangganan ng salita ay nakilala sa bash ng $ IFS. Ang puting puwang ay ang default na halaga ng delimiter para sa variable na ito. Anumang iba pang halaga tulad ng ‘ t’, ‘ n’, ‘-‘ atbp ay maaaring magamit bilang delimiter. Matapos italaga ang halaga sa variable na $ IFS, ang halaga ng string ay maaaring mabasa ng dalawang mga pagpipilian. Ito ang mga '-r' at '-a'. Ang pagpipilian, '-r' ay ginagamit upang basahin ang backslash () bilang isang character sa halip na makatakas ang character at ang pagpipiliang '-a' ay ginagamit upang iimbak ang mga split-ted na salita sa isang variable ng array. Ang string ay maaaring split-ted nang hindi gumagamit ng variable na $ IFS sa bash. Ang iba't ibang mga paraan upang hatiin ang data ng string (na may $ IFS o walang $ IFS) ay ipinapakita sa mga sumusunod na halimbawa.



Halimbawa-1: Hatiin ang string batay sa

Ang halaga ng string ay hinati sa puting puwang bilang default. Lumikha ng isang file na pinangalanang 'split1.sh' at idagdag ang sumusunod na code. Dito, ginagamit ang variable ng $ text upang magtalaga ng isang halaga ng string. Ang variable ng shell, $ IFS ay ginagamit upang magtalaga ng character na gagamitin para sa paghahati ng data ng string. Ginagamit ang space sa script na ito bilang separator. Ginagamit ang pagpipiliang '-a' kasama ang utos sa pagbabasa upang maiimbak ang split-ted data sa isang variable ng array na pinangalanang $ strarr. Ginagamit ang loop na 'for' upang basahin ang bawat elemento ng array, $ strarr.



split1.sh





#! / baseng / bash

#Tukuyin ang halaga ng string
text='Maligayang pagdating sa LinuxHint'

# Itakda ang puwang bilang delimiter
IFS='

#Basahin ang mga nahati na salita sa isang array batay sa space delimiter
basahin -sastrarr<<< '$ text'

#Bilangan ang kabuuang mga salita
itinapon 'Meron$ {# strarr [*]}mga salita sa teksto. '

# I-print ang bawat halaga ng array sa pamamagitan ng paggamit ng loop
para saorassa '$ {strarr [@]}';
gawin
printf '$ oras n'
tapos na

Output:

Patakbuhin ang iskrip.



$bashsplit1.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Halimbawa-2: Hatiin ang string batay sa isang partikular na character

Ang anumang tukoy na character ay maaaring magamit bilang separator para sa paghahati ng halaga ng string. Lumikha ng isang file na pinangalanan split2.sh at idagdag ang sumusunod na code. Dito, ang pangalan ng libro, pangalan ng may-akda at halaga ng presyo ay kinuha sa pamamagitan ng pagdaragdag ng kuwit (,) bilang isang input string. Susunod, ang halaga ng string ay split-ted at nakaimbak sa isang array batay sa halaga ng variable ng shell, $ IFS. Ang bawat halaga ng mga elemento ng array ay nai-print ng index na halaga.

split2.sh

#! / baseng / bash

#Basahin ang halaga ng string
itinapon 'Ipasok ang pangalan ng libro, pangalan ng may-akda at presyo sa pamamagitan ng paghihiwalay ng kuwit. '
basahintext

# Itakda ang kuwit bilang delimiter
IFS=','

# Basahin ang mga nahati na salita sa isang array batay sa comma delimiter
basahin -sastrarr<<< '$ text'

#Print ang mga pinaghiwalay na salita
itinapon 'Pangalan ng Libro:$ {strarr [0]}'
itinapon 'Pangalan ng May-akda:$ {strarr [1]}'
itinapon 'Presyo:$ {strarr [2]}'

Output:

Patakbuhin ang iskrip.

$bashsplit2.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Halimbawa-3: Hatiin ang string nang walang variable na $ IFS

Ipinapakita ng halimbawang ito kung paano mahahati ang halaga ng string nang hindi gumagamit ng $ IFS sa bash. Lumikha ng isang file na pinangalanang ‘ split3.sh ’ at idagdag ang sumusunod na code. Ayon sa script, isang halaga ng teksto kasama ang colon (:) kailangang kumuha bilang input para sa paghahati. Dito, ginagamit ang command na 'readarray' na may pagpipilian na -d upang hatiin ang data ng string. Ginagamit ang pagpipiliang '-d' upang tukuyin ang karakter ng separator sa utos tulad ng $ IFS. Susunod, ang loop na 'for' ay ginagamit upang mai-print ang mga elemento ng array.

split3.sh

#! / baseng / bash

#Basahin ang pangunahing string
itinapon 'Ipasok ang string gamit ang colon (:) upang hatiin'
basahinmainstr

#Split ang string batay sa delimiter, ':'
readarray-d:-tstrarr<<< '$ mainstr'
printf ' n'

# I-print ang bawat halaga ng array sa pamamagitan ng paggamit ng loop
para sa (( n=0; n< $ {# strarr [*]}; n ++))
gawin
itinapon '$ {strarr [n]}'
tapos na

Output:

Patakbuhin ang iskrip.

$bashsplit3.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Halimbawa-4: Hatiin ang string gamit ang isang multi-character delimiter

Ang halaga ng string ay split-ted ng isang solong delimiter ng character sa lahat ng nakaraang mga halimbawa. Paano mo hahatiin ang string sa pamamagitan ng paggamit ng multi-character delimiter ay ipinapakita sa halimbawang ito. Lumikha ng isang file na pinangalanan Hati ng oras4.sh at idagdag ang sumusunod na code. Dito, ginagamit ang variable ng $ text upang mag-imbak ng isang data ng string. Ginagamit ang variable ng $ delimiter upang magtalaga ng isang multi-character na data na ginagamit bilang delimiter sa mga susunod na pahayag. Ginagamit ang variable na $ myarray upang iimbak ang bawat split-ted data bilang isang elemento ng array. Sa wakas, ang lahat ng split-ted data ay naka-print sa pamamagitan ng paggamit ng 'for' loop.

split4.sh

#! / baseng / bash

#Tukuyin ang string upang hatiin
text='malamanHTMLlearnPHPlearnMySQLlearnJavascript'

# Tukuyin ang multi-character delimiter
delimiter='matuto'
#Concatenate ang delimiter sa pangunahing string
lubid=$ text$ delimiter

#Split ang teksto batay sa delimiter
myarray=()
habang [[ $ string ]];gawin
myarray + =( '$ {string %% '$ delimiter' *}' )
lubid=$ {string # * '$ delimiter'}
tapos na

#I-print ang mga salita pagkatapos ng paghati
para sahalagasa $ {myarray [@]}
gawin
itinapon -n '$ halaga'
tapos na
printf ' n'

Output:

Patakbuhin ang iskrip.

$bashsplit4.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Konklusyon:

Ang data ng string ay kailangang hatiin para sa iba't ibang mga layunin sa pagprogram. Ang iba't ibang mga paraan ng paghahati ng data ng string sa bash ay ipinapakita sa tutorial na ito. Sana, pagkatapos ng pagsasanay sa mga halimbawa sa itaas, magagawang hatiin ng mga mambabasa ang anumang data ng string batay sa kanilang kinakailangan.

Para sa karagdagang impormasyon sa panonood ang video !