Príklady reťazca Bash Split

Bash Split String Examples



V programovaní musíme rozdeliť reťazcové údaje na rôzne účely. Mnoho programovacích jazykov má vstavanú funkciu s názvom „rozdelenie“ na rozdelenie ľubovoľných reťazcových údajov na viacero častí. V bash však nie je vstavaná funkcia na rozdelenie reťazca. Na rozdelenie ľubovoľných reťazcových údajov sa bežne používa jeden alebo viac oddeľovačov. Ako môžete rozdeliť reťazec v bash, je ukázané v tomto návode pomocou rôznych príkladov.








Použitie premennej $ IFS

Na rozdelenie reťazca na slová sa v bash používa špeciálna premenná shell $ IFS. Premenná $ IFS sa nazýva interný oddeľovač polí (IFS), ktorý sa používa na priradenie konkrétneho oddeľovača na rozdelenie reťazca. Hranice slova sú v bashe identifikované pomocou $ IFS. Prázdny priestor je predvolenou hodnotou oddeľovača pre túto premennú. Ako oddeľovač je možné použiť akékoľvek iné hodnoty, napríklad „ t“, „ n“, „-“ atď. Po priradení hodnoty do premennej $ IFS je možné hodnotu reťazca prečítať pomocou dvoch možností. Sú to „-r“ a „-a“. Voľba „-r“ sa používa na čítanie spätného lomítka () ako znaku a nie na únikový znak a možnosť „-a“ sa používa na ukladanie rozdelených slov do premennej poľa. Reťazec je možné rozdeliť bez použitia premennej $ IFS v bash. Rôzne spôsoby rozdelenia reťazcových údajov (s $ IFS alebo bez $ IFS) sú uvedené v nasledujúcich príkladoch.



Príklad 1: Rozdelenie reťazca na základe

Štandardne je hodnota reťazca delená prázdnymi miestami. Vytvorte súbor s názvom „split1.sh“ a pridajte nasledujúci kód. Tu sa na priradenie reťazcovej hodnoty používa premenná $ text. Premenná shell, $ IFS, sa používa na priradenie znaku, ktorý sa použije na rozdelenie reťazcových údajov. V tomto skripte sa ako oddeľovač používa medzera. Voľba „-a“ sa používa s príkazom na čítanie na uloženie rozdelených údajov do premennej poľa s názvom $ strarr. Slučka „for“ sa používa na čítanie každého prvku poľa, $ strarr.



split1.sh





#!/bin/bash

#Definujte hodnotu reťazca
text=„Vitajte v LinuxHint“

# Nastaviť priestor ako oddeľovač
IFS=''

#Prečítajte rozdelené slová do poľa na základe oddeľovača medzier
čítať -dostrarr<<< '$ text'

#Sčítajte všetky slová
zahodil 'Existujú$ {#strarr [*]}slová v texte. “

# Vytlačte každú hodnotu poľa pomocou slučky
prehodv '$ {strarr [@]}';
urobiť
printf '$ hodín n'
hotový

Výkon:

Spustite skript.



$bashsplit1.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Príklad 2: Rozdelenie reťazca na základe konkrétneho znaku

Na oddelenie hodnoty reťazca je možné ako oddeľovač použiť ľubovoľný konkrétny znak. Vytvorte súbor s názvom split2.sh a pridajte nasledujúci kód. Tu sa názov knihy, meno autora a hodnota ceny berú ako čiarka (,) ako vstupný reťazec. Ďalej sa hodnota reťazca rozdelí a uloží do poľa na základe hodnoty premennej shellu $ IFS. Každá hodnota prvkov poľa je vytlačená hodnotou indexu.

split2.sh

#!/bin/bash

#Prečítajte si hodnotu reťazca
zahodil „Zadajte názov knihy, meno autora a cenu oddelením čiarkami. '
čítaťtext

# Nastaviť čiarku ako oddeľovač
IFS=','

#Prečítajte rozdelené slová do poľa na základe oddeľovača čiarok
čítať -dostrarr<<< '$ text'

#Vytlačte rozdelené slová
zahodil „Názov knihy:$ {strarr [0]}'
zahodil 'Meno autora:$ {strarr [1]}'
zahodil 'Cena :$ {strarr [2]}'

Výkon:

Spustite skript.

$bashsplit2.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Príklad 3: Rozdeľte reťazec bez premennej $ IFS

Tento príklad ukazuje, ako je možné hodnotu reťazca rozdeliť bez použitia $ IFS v bash. Vytvorte súbor s názvom „ split3.sh ' a pridajte nasledujúci kód. Podľa scenára textová hodnota s dvojbodkou (:) musí brať ako vstup pre rozdelenie. Tu sa na rozdelenie reťazcových údajov používa príkaz „readarray“ s voľbou -d. Voľba „-d“ sa používa na definovanie oddeľovača v príkaze, ako je $ IFS. Ďalej sa slučka „for“ používa na tlač prvkov poľa.

split3.sh

#!/bin/bash

#Prečítajte si hlavný reťazec
zahodil „Zadajte reťazec s dvojbodkou (:) na rozdelenie“
čítaťmainstr

#Rozdeľte reťazec podľa oddeľovača ':'
readarray-d:-tstrarr<<< '$ mainstr'
printf ' n'

# Vytlačte každú hodnotu poľa pomocou slučky
pre (( n=0; n< $ {#strarr [*]}; n ++))
urobiť
zahodil '$ {strarr [n]}'
hotový

Výkon:

Spustite skript.

$bashsplit3.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Príklad 4: Rozdeľte reťazec viacznakovým oddeľovačom

Vo všetkých predchádzajúcich príkladoch je hodnota reťazca rozdelená na jeden oddeľovač znakov. V tomto príklade je znázornené, ako môžete rozdeliť reťazec pomocou oddeľovača viacerých znakov. Vytvorte súbor s názvom Časy rozdelené4.sh a pridajte nasledujúci kód. Tu sa na ukladanie údajov reťazca používa premenná $ text. Premenná $ delimiter sa používa na priradenie viacznakových údajov, ktoré sa v nasledujúcich príkazoch používajú ako oddeľovač. Premenná $ myarray sa používa na ukladanie všetkých údajov s rozdeleným časom ako prvok poľa. Nakoniec sa všetky rozdelené údaje vytlačia pomocou slučky „for“.

split4.sh

#!/bin/bash

#Definujte reťazec, ktorý chcete rozdeliť
text='learnHTMLlearnPHPlearnMySQLlearnJavascript'

#Define multi-character delimiter
oddeľovač='učiť sa'
#Spojte oddeľovač s hlavným reťazcom
reťazec=$ textoddeľovač dolárov

#Rozdeľte text na základe oddeľovača
myarray=()
kým [[ $ reťazec ]];urobiť
myarray+=( '$ {string %% '$ delimiter'*}' )
reťazec=$ {string#*'$ delimiter'}
hotový

#Vytlačte slová po rozdelení
prehodnotuv $ {myarray [@]}
urobiť
zahodil -n 'hodnota $'
hotový
printf ' n'

Výkon:

Spustite skript.

$bashsplit4.sh

Po spustení skriptu sa zobrazí nasledujúci výstup.

Záver:

Reťazcové údaje je potrebné rozdeliť na rôzne účely programovania. V tomto návode sú uvedené rôzne spôsoby rozdelenia údajov reťazca v bash. Dúfam, že po precvičení vyššie uvedených príkladov budú čitatelia schopní rozdeliť všetky reťazcové údaje na základe ich požiadaviek.

Pre viac informácií sledujte video !