Příklady řetězců Bash Split

Bash Split String Examples

Řetězcová data musíme v programování rozdělit pro různé účely. Mnoho programovacích jazyků má vestavěnou funkci s názvem „rozdělení“ pro rozdělení libovolných řetězcových dat na více částí. Ale v bash není žádná integrovaná funkce pro dělení řetězce. K rozdělení jakýchkoli řetězcových dat se obvykle používají jeden nebo více oddělovačů. Jak můžete rozdělit řetězec v bash, je ukázáno v tomto kurzu pomocí různých příkladů.




Použití proměnné $ IFS

Pro rozdělení řetězce na slova se v bashu používá speciální shell proměnná $ IFS. Proměnná $ IFS se nazývá Internal Field Separator (IFS), která se používá k přiřazení konkrétního oddělovače pro dělení řetězce. Hranice slov jsou v bash identifikovány pomocí $ IFS. Mezera je výchozí hodnotou oddělovače pro tuto proměnnou. Jako oddělovač lze použít jakoukoli jinou hodnotu, například „ t“, „ n“, „-“ atd. Po přiřazení hodnoty do proměnné $ IFS lze hodnotu řetězce přečíst ze dvou možností. Jsou to „-r“ a „-a“. Možnost „-r“ se používá ke čtení zpětného lomítka () jako znaku, nikoli jako únikový znak, a možnost „-a“ se používá k ukládání rozdělených slov do proměnné pole. Řetězec lze rozdělit bez použití proměnné $ IFS v bash. Různé způsoby rozdělení řetězcových dat (s $ IFS nebo bez $ IFS) jsou uvedeny v následujících příkladech.



Příklad-1: Rozdělení řetězce na základě

Hodnota řetězce je ve výchozím nastavení dělena mezerou. Vytvořte soubor s názvem ‘split1.sh’ a přidejte následující kód. Zde se k přiřazení řetězcové hodnoty používá $ textová proměnná. Proměnná prostředí $ IFS se používá k přiřazení znaku, který bude použit k rozdělení řetězcových dat. Prostor je v tomto skriptu použit jako oddělovač. Možnost -a se používá s příkazem pro čtení k uložení dat rozdělených do proměnné pole s názvem $ strarr. Smyčka „for“ se používá ke čtení každého prvku pole, $ strarr.



split1.sh

#!/bin/bash

#Definujte hodnotu řetězce
text='Welcome to LinuxHint'

# Nastavit prostor jako oddělovač
IFS=''

#Přečtěte rozdělená slova do pole na základě oddělovače mezer
číst -nastrarr<<< '$ text'

#Sečtěte celkový počet slov
vyhodil 'Existují$ {#strarr [*]}slova v textu. '

# Vytiskněte každou hodnotu pole pomocí smyčky
prohodv '$ {strarr [@]}';
dělat
printf '$ hodin n'
Hotovo

Výstup:

Spusťte skript.



$bashsplit1.sh

Po spuštění skriptu se zobrazí následující výstup.

Příklad-2: Rozdělení řetězce na základě konkrétního znaku

Jako oddělovač pro rozdělení hodnoty řetězce lze použít libovolný konkrétní znak. Vytvořte soubor s názvem split2.sh a přidejte následující kód. Zde se název knihy, jméno autora a hodnota ceny berou přidáním čárky (,) jako vstupního řetězce. Dále se hodnota řetězce rozdělí a uloží do pole na základě hodnoty proměnné prostředí $ IFS. Každá hodnota prvků pole je vytištěna hodnotou indexu.

split2.sh

#!/bin/bash

#Přečtěte si hodnotu řetězce
vyhodil „Zadejte název knihy, jméno autora a cenu oddělením čárkou. '
čísttext

# Jako oddělovač nastavte čárku
IFS=','

#Přečtěte rozdělená slova do pole na základě oddělovače čárky
číst -nastrarr<<< '$ text'

#Vytiskněte rozdělená slova
vyhodil 'Název knihy:$ {strarr [0]}'
vyhodil 'Jméno autora:$ {strarr [1]}'
vyhodil 'Cena :$ {strarr [2]}'

Výstup:

Spusťte skript.

$bashsplit2.sh

Po spuštění skriptu se zobrazí následující výstup.

Příklad 3: Rozdělte řetězec bez proměnné $ IFS

Tento příklad ukazuje, jak lze hodnotu řetězce rozdělit bez použití $ IFS v bash. Vytvořte soubor s názvem „ split3.sh ‘ a přidejte následující kód. Podle skriptu textová hodnota s dvojtečkou (:) musí brát jako vstup pro rozdělení. Zde se k rozdělení řetězcových dat používá příkaz „readarray“ s volbou -d. Volba „-d“ se používá k definování oddělovače v příkazu, jako je $ IFS. Dále se k tisku prvků pole používá smyčka „for“.

split3.sh

#!/bin/bash

#Přečtěte si hlavní řetězec
vyhodil 'Zadejte řetězec dvojtečkou (:) k rozdělení'
čístmainstr

#Rozdělte řetězec podle oddělovače ':'
readarray-d:-tstrarr<<< '$ mainstr'
printf ' n'

# Vytiskněte každou hodnotu pole pomocí smyčky
pro (( n=0; n< $ {#strarr [*]}; n ++))
dělat
vyhodil '$ {strarr [n]}'
Hotovo

Výstup:

Spusťte skript.

$bashsplit3.sh

Po spuštění skriptu se zobrazí následující výstup.

Příklad-4: Rozdělte řetězec víceznakovým oddělovačem

Hodnota řetězce je ve všech předchozích příkladech rozdělena oddělovačem jednoho znaku. V tomto příkladu je ukázáno, jak můžete řetězec rozdělit pomocí víceznakového oddělovače. Vytvořte soubor s názvem Časy split4.sh a přidejte následující kód. Zde se k ukládání řetězcových dat používá $ textová proměnná. $ delimiter variable is used to assign a multi-character data that is used as the delimiter in the next commands. Proměnná $ myarray se používá k ukládání jednotlivých dat rozdělených jako pole. Nakonec jsou všechna data s rozděleným datem vytištěna pomocí smyčky „for“.

split4.sh

#!/bin/bash

#Definujte řetězec, který chcete rozdělit
text='learnHTMLlearnPHPlearnMySQLlearnJavascript'

#Definujte víceznakový oddělovač
oddělovač='Učit se'
#Spojte oddělovač s hlavním řetězcem
tětiva=$ text$ oddělovač

#Rozdělte text podle oddělovače
myarray=()
zatímco [[ $ řetězec ]];dělat
myarray+=( '$ {string %% '$ delimiter'*}' )
tětiva=$ {string#*'$ delimiter'}
Hotovo

#Vytiskněte slova po rozdělení
prohodnotav $ {myarray [@]}
dělat
vyhodil -n '$ hodnota'
Hotovo
printf ' n'

Výstup:

Spusťte skript.

$bashsplit4.sh

Po spuštění skriptu se zobrazí následující výstup.

Závěr:

Řetězcová data je třeba rozdělit pro různé účely programování. V tomto kurzu jsou ukázány různé způsoby rozdělení dat řetězců v bash. Doufám, že po procvičení výše uvedených příkladů budou čtenáři schopni rozdělit libovolná řetězcová data na základě jejich požadavku.

Pro více informací sledujte video !