Bash Split String Exemple

Bash Split String Examples



Trebuie să împărțim datele șirului în diferite scopuri în programare. Multe limbaje de programare au o funcție încorporată numită „divizat” pentru a împărți orice șir de date în mai multe părți. Dar nu există nicio funcție încorporată în bash pentru divizarea șirului. În mod normal, delimitatorii unici sau multipli sunt utilizați pentru a împărți orice șir de date. Cum puteți împărți șirul în bash este prezentat în acest tutorial folosind diferite exemple.








Folosind variabila $ IFS

Variabila specială shell $ IFS este utilizată în bash pentru împărțirea unui șir în cuvinte. Variabila $ IFS se numește Separator de câmp intern (IFS), care este utilizat pentru a atribui delimitatorul specific pentru divizarea șirului. Limitele cuvintelor sunt identificate în bash prin $ IFS. Spațiul alb este valoarea implicită a delimitatorului pentru această variabilă. Orice altă valoare precum „ t”, „ n”, „-„ etc. Poate fi utilizată ca delimitator. După atribuirea valorii în variabila $ IFS, valoarea șirului poate fi citită prin două opțiuni. Acestea sunt „-r” și „-a”. Opțiunea, „-r” este utilizată pentru a citi backslash () ca un caracter mai degrabă decât un caracter de evacuare și opțiunea „-a” este utilizată pentru a stoca cuvintele împărțite într-o variabilă matrice. Șirul poate fi împărțit fără a utiliza variabila $ IFS în bash. Diferite moduri de divizare a șirurilor de date (cu $ IFS sau fără $ IFS) sunt prezentate în următoarele exemple.



Exemplu-1: Split șir bazat pe

Valoarea șirului este împărțită în mod implicit la spațiul alb. Creați un fișier numit „split1.sh” și adăugați următorul cod. Aici, variabila $ text este utilizată pentru a atribui o valoare șir. Variabila shell, $ IFS este utilizată pentru a atribui caracterul care va fi utilizat pentru divizarea datelor șirului. Spațiul este utilizat în acest script ca separator. Opțiunea „-a” este utilizată cu comanda de citire pentru a stoca datele divizate într-o variabilă matrice numită $ strarr. Bucla ‘pentru’ este utilizată pentru a citi fiecare element al matricei, $ strarr.



split1.sh





#! / bin / bash

# Definiți valoarea șirului
text=„Bun venit la LinuxHint”

# Setați spațiul ca delimitator
IFS=''

#Citiți cuvintele împărțite într-o matrice bazată pe delimitator de spațiu
citit -lastrarr<<< '$ text'

# Numărați cuvintele totale
aruncat 'Sunt$ {# strarr [*]}cuvinte din text. '

# Imprimați fiecare valoare a matricei utilizând bucla
pentruoreîn '$ {strarr [@]}';
do
printf '$ ore n'
Terminat

Ieșire:

Rulați scriptul.



$bashsplit1.sh

Următoarea ieșire va apărea după rularea scriptului.

Exemplul-2: împarte șirul pe baza unui anumit caracter

Orice caracter specific poate fi folosit ca separator pentru divizarea valorii șirului. Creați un fișier numit split2.sh și adăugați următorul cod. Aici, numele cărții, numele autorului și valoarea prețului sunt luate prin adăugarea virgulei (,) ca șir de intrare. Apoi, valoarea șirului este împărțită și stocată într-o matrice bazată pe valoarea variabilei shell, $ IFS. Fiecare valoare a elementelor matricei este tipărită de valoarea indexului.

split2.sh

#! / bin / bash

#Citiți valoarea șirului
aruncat 'Introduceți numele cărții, numele autorului și prețul separând virgula. '
citittext

# Setați virgula ca delimitator
IFS=','

#Citiți cuvintele împărțite într-o matrice bazată pe delimitator de virgule
citit -lastrarr<<< '$ text'

#Printați cuvintele împărțite
aruncat „Numele cărții:$ {strarr [0]}'
aruncat 'Numele autorului :$ {strarr [1]}'
aruncat 'Preț :$ {strarr [2]}'

Ieșire:

Rulați scriptul.

$bashsplit2.sh

Următoarea ieșire va apărea după rularea scriptului.

Exemplu-3: Împarte șirul fără variabila $ IFS

Acest exemplu arată modul în care valoarea șirului poate fi împărțită fără a utiliza $ IFS în bash. Creați un fișier numit „ split3.sh ” și adăugați următorul cod. Conform scriptului, o valoare text cu două puncte (:) trebuie să ia ca intrare pentru divizare. Aici, comanda ‘readarray’ cu opțiunea -d este utilizată pentru a împărți datele șirului. Opțiunea ‘-d’ este utilizată pentru a defini caracterul separator din comandă, cum ar fi $ IFS. Apoi, bucla „pentru” este utilizată pentru a imprima elementele matricei.

split3.sh

#! / bin / bash

#Citiți șirul principal
aruncat 'Introduceți șirul cu două puncte (:) pentru a împărți'
cititmainstr

#Split șirul bazat pe delimitator, ':'
readarray-d:-tstrarr<<< '$ mainstr'
printf ' n'

# Imprimați fiecare valoare a matricei utilizând bucla
pentru (( n=0; n< $ {# strarr [*]}; n ++))
do
aruncat '$ {strarr [n]}'
Terminat

Ieșire:

Rulați scriptul.

$bashsplit3.sh

Următoarea ieșire va apărea după rularea scriptului.

Exemplul-4: Împarte șirul cu un delimitator cu mai multe caractere

Valoarea șirului este împărțită de un singur delimitator de caractere în toate exemplele anterioare. Cum puteți împărți șirul folosind delimitatorul cu mai multe caractere este prezentat în acest exemplu. Creați un fișier numit Times split4.sh și adăugați următorul cod. Aici, variabila $ text este utilizată pentru a stoca un șir de date. Variabila $ delimiter este utilizată pentru a atribui date cu mai multe caractere care sunt utilizate ca delimitator în următoarele instrucțiuni. Variabila $ myarray este utilizată pentru stocarea fiecărei date divizate ca element de matrice. În cele din urmă, toate datele divizate sunt tipărite utilizând bucla „pentru”.

split4.sh

#! / bin / bash

# Definiți șirul de împărțit
text=„learnHTMLlearnPHPlearnMySQLlearnJavascript”

# Definiți delimitatorul cu mai multe caractere
delimitator='învăța'
#Concatenează delimitatorul cu șirul principal
şir=$ text$ delimitator

#Split textul pe baza delimitatorului
myarray=()
in timp ce [[ $ string ]];do
myarray + =( '$ {string %% '$ delimiter' *}' )
şir=$ {string # * '$ delimiter'}
Terminat

#Printați cuvintele după împărțire
pentruvaloareîn $ {myarray [@]}
do
aruncat -n 'valoare $'
Terminat
printf ' n'

Ieșire:

Rulați scriptul.

$bashsplit4.sh

Următoarea ieșire va apărea după rularea scriptului.

Concluzie:

Datele șirului trebuie să se împartă în diferite scopuri de programare. Diferite moduri de divizare a șirurilor de date în bash sunt prezentate în acest tutorial. Sper că, după ce vor practica exemplele de mai sus, cititorii vor putea împărți orice șir de date pe baza cerințelor lor.

Pentru mai multe informații vizionați videoclipul !