Exemples de cordes dividides de Bash

Bash Split String Examples



Hem de dividir les dades de la cadena per a diversos propòsits a la programació. Molts llenguatges de programació tenen una funció integrada anomenada 'split' per dividir qualsevol dada de cadena en diverses parts. Però no hi ha cap funció integrada a bash per dividir la cadena. Normalment, s’utilitzen delimitadors simples o múltiples per dividir qualsevol dada de cadena. En aquest tutorial es mostra com podeu dividir la cadena en bash en utilitzar diferents exemples.








Utilitzant la variable $ IFS

La variable de shell especial $ IFS s'utilitza en bash per dividir una cadena en paraules. La variable $ IFS s'anomena separador de camps intern (IFS) que s'utilitza per assignar el delimitador específic per dividir la cadena. Els límits de les paraules s’identifiquen en bash per $ IFS. L’espai en blanc és el valor delimitador per defecte d’aquesta variable. Qualsevol altre valor com ' t', ' n', '-' etc. Es pot utilitzar com a delimitador. Després d'assignar el valor a la variable $ IFS, el valor de la cadena es pot llegir mitjançant dues opcions. Aquests són ‘-r’ i ‘-a’. L’opció ‘-r’ s’utilitza per llegir la barra invertida () com a caràcter en lloc de caràcter d’escapament i l’opció ‘-a’ s’utilitza per emmagatzemar les paraules dividides en una variable de matriu. La cadena es pot dividir sense utilitzar la variable $ IFS a bash. Als exemples següents es mostren diferents maneres de dividir dades de cadenes (amb $ IFS o sense $ IFS).



Exemple-1: divideix la cadena basada en

El valor de la cadena es divideix per defecte per espais en blanc. Creeu un fitxer anomenat 'split1.sh' i afegiu el codi següent. Aquí, la variable $ text s'utilitza per assignar un valor de cadena. La variable de l'intèrpret d'ordres, $ IFS, s'utilitza per assignar el caràcter que s'utilitzarà per dividir les dades de la cadena. En aquest script s’utilitza espai com a separador. L’opció ‘-a’ s’utilitza amb l’ordre de lectura per emmagatzemar les dades dividides en una variable de matriu anomenada $ strarr. El bucle 'for' s'utilitza per llegir cada element de la matriu, $ strarr.



split1.sh





#! / bin / bash

# Definiu el valor de la cadena
text='Benvingut a LinuxHint'

# Estableix l’espai com a delimitador
IFS=''

#Llegiu les paraules dividides en una matriu basada en el delimitador d'espai
llegir -astrarr<<< '$ text'

#Compteu el total de paraules
trobo —N’hi ha$ {# strarr [*]}paraules del text. '

# Imprimiu cada valor de la matriu mitjançant el bucle
perhoresdins '$ {strarr [@]}';
fer
printf '$ hores n'
fet

Sortida:

Executeu l'script.



$bashsplit1.sh

La següent sortida apareixerà després d'executar l'script.

Exemple-2: divideix la cadena basada en un caràcter concret

Es pot utilitzar qualsevol caràcter específic com a separador per dividir el valor de la cadena. Creeu un fitxer anomenat split2.sh i afegiu el codi següent. Aquí, el nom del llibre, el nom de l'autor i el valor del preu es prenen afegint coma (,) com a cadena d'entrada. A continuació, el valor de la cadena es divideix i s'emmagatzema en una matriu basada en el valor de la variable de l'intèrpret d'ordres, $ IFS. El valor de l'índex imprimeix cada valor dels elements de la matriu.

split2.sh

#! / bin / bash

#Llegiu el valor de la cadena
trobo 'Introduïu el nom del llibre, el nom de l'autor i el preu separant la coma. '
llegirtext

# Estableix la coma com a delimitador
IFS=','

#Llegiu les paraules dividides en una matriu basada en el delimitador de comes
llegir -astrarr<<< '$ text'

#Imprimiu les paraules dividides
trobo Nom del llibre:$ {strarr [0]}'
trobo Nom de l'autor:$ {strarr [1]}'
trobo 'Preu:$ {strarr [2]}'

Sortida:

Executeu l'script.

$bashsplit2.sh

La següent sortida apareixerà després d'executar l'script.

Exemple-3: divideix la cadena sense la variable $ IFS

Aquest exemple mostra com es pot dividir el valor de la cadena sense utilitzar $ IFS a bash. Creeu un fitxer anomenat ' split3.sh ' i afegiu el codi següent. Segons l’escriptura, un valor de text amb dos punts (:) ha de prendre com a entrada per dividir. Aquí s’utilitza l’ordre ‘readarray’ amb l’opció -d per dividir les dades de la cadena. L’opció ‘-d’ s’utilitza per definir el caràcter separador de l’ordre com $ IFS. A continuació, s’utilitza el bucle ‘per’ per imprimir els elements de la matriu.

split3.sh

#! / bin / bash

#Llegiu la cadena principal
trobo 'Introduïu la cadena amb dos punts (:) per dividir'
llegirmainstr

#Split la cadena basada en el delimitador, ':'
readarray-d:-tstrarr<<< '$ mainstr'
printf ' n'

# Imprimiu cada valor de la matriu mitjançant un bucle
per (( n=0; n< $ {# strarr [*]}; n ++))
fer
trobo '$ {strarr [n]}'
fet

Sortida:

Executeu l'script.

$bashsplit3.sh

La següent sortida apareixerà després d'executar l'script.

Exemple-4: Dividiu la cadena amb un delimitador de diversos caràcters

El valor de la cadena està dividit per un delimitador de caràcters únic en tots els exemples anteriors. En aquest exemple es mostra com podeu dividir la cadena mitjançant un delimitador de diversos caràcters. Creeu un fitxer anomenat Temps split4.sh i afegiu el codi següent. Aquí, la variable $ text s'utilitza per emmagatzemar una cadena de dades. La variable $ delimiter s'utilitza per assignar dades de diversos caràcters que s'utilitzen com a delimitador a les següents sentències. La variable $ myarray s'utilitza per emmagatzemar cada dada dividida com a element de matriu. Finalment, totes les dades dividides s’imprimeixen mitjançant un bucle 'for'.

split4.sh

#! / bin / bash

#Defineix la cadena per dividir
text='aprendreHTMLlearnPHPlearnMySQLlearnJavascript'

#Defineix el delimitador de caràcters múltiples
delimitador='aprendre'
#Concaten el delimitador amb la cadena principal
corda=$ text$ delimitador

#Dividiu el text en funció del delimitador
myarray=()
mentre [[ $ string ]];fer
myarray + =( '$ {string %% '$ delimiter' *}' )
corda=$ {string # * '$ delimiter'}
fet

#Imprimiu les paraules després de la divisió
pervalordins $ {myarray [@]}
fer
trobo -n 'valor en $'
fet
printf ' n'

Sortida:

Executeu l'script.

$bashsplit4.sh

La següent sortida apareixerà després d'executar l'script.

Conclusió:

Les dades de la cadena s'han de dividir per a diferents propòsits de programació. En aquest tutorial es mostren diverses maneres de dividir les dades de cadenes en bash. Esperem que, després de practicar els exemples anteriors, els lectors puguin dividir qualsevol dada de cadena en funció del seu requisit.

Per obtenir més informació, vegeu el vídeo !