Esempi di corde spaccate Bash

Bash Split String Examples

Abbiamo bisogno di dividere i dati della stringa per vari scopi nella programmazione. Molti linguaggi di programmazione hanno una funzione incorporata denominata 'split' per dividere qualsiasi stringa di dati in più parti. Ma non esiste una funzione incorporata in bash per dividere la stringa. Normalmente, vengono utilizzati delimitatori singoli o multipli per dividere i dati di stringa. Come puoi dividere la stringa in bash è mostrato in questo tutorial usando diversi esempi.




Utilizzo della variabile $IFS

La variabile shell speciale $IFS è usata in bash per dividere una stringa in parole. La variabile $IFS è denominata Internal Field Separator (IFS) che viene utilizzata per assegnare il delimitatore specifico per la divisione della stringa. I confini delle parole sono identificati in bash da $IFS. Lo spazio vuoto è il valore delimitatore predefinito per questa variabile. Qualsiasi altro valore come ' ', ' ', '-' ecc. Può essere utilizzato come delimitatore. Dopo aver assegnato il valore nella variabile $IFS, il valore della stringa può essere letto da due opzioni. Questi sono '-r' e '-a'. L'opzione '-r' viene utilizzata per leggere la barra rovesciata () come un carattere anziché come carattere di escape e l'opzione '-a' viene utilizzata per memorizzare le parole suddivise in una variabile di matrice. La stringa può essere suddivisa senza utilizzare la variabile $IFS in bash. Negli esempi seguenti vengono mostrati diversi modi per dividere i dati delle stringhe (con $IFS o senza $IFS).



Esempio 1: stringa divisa in base a

Per impostazione predefinita, il valore della stringa è diviso per spazi vuoti. Crea un file chiamato 'split1.sh' e aggiungi il seguente codice. Qui, la variabile $text viene utilizzata per assegnare un valore stringa. La variabile shell $IFS viene utilizzata per assegnare il carattere che verrà utilizzato per dividere i dati della stringa. Lo spazio viene utilizzato in questo script come separatore. L'opzione '-a' viene utilizzata con il comando di lettura per memorizzare i dati suddivisi in una variabile di array denominata $strarr. Il ciclo 'for' viene utilizzato per leggere ogni elemento dell'array, $strarr.



split1.sh

#!/bin/bash

#Definisci il valore della stringa
testo='Benvenuto in LinuxHint'

# Imposta lo spazio come delimitatore
IFS=''

#Leggi le parole divise in un array basato sul delimitatore di spazio
leggere -astrarra<<< '$testo'

#Conta le parole totali
buttato fuori 'Ci sono${#strarr[*]}parole nel testo.'

# Stampa ogni valore dell'array usando il ciclo
perorein '${strarr[@]}';
fare
printf '$ ore '
fatto

Produzione:

Esegui lo script.



$bashsplit1.sh

Il seguente output apparirà dopo aver eseguito lo script.

Esempio-2: stringa divisa in base a un carattere particolare

Qualsiasi carattere specifico può essere utilizzato come separatore per dividere il valore della stringa. Crea un file chiamato split2.sh e aggiungere il seguente codice. Qui, il nome del libro, il nome dell'autore e il valore del prezzo vengono presi aggiungendo la virgola (,) come stringa di input. Successivamente, il valore della stringa viene suddiviso e memorizzato in un array basato sul valore della variabile shell, $IFS. Ogni valore degli elementi dell'array viene stampato dal valore dell'indice.

split2.sh

#!/bin/bash

#Leggi il valore della stringa
buttato fuori 'Inserisci il nome del libro, il nome dell'autore e il prezzo separando la virgola. '
leggeretesto

# Imposta la virgola come delimitatore
IFS=','

#Leggi le parole divise in un array basato sul delimitatore di virgola
leggere -astrarra<<< '$testo'

#Stampa le parole divise
buttato fuori 'Nome del libro:${strarr[0] }'
buttato fuori 'Nome dell'autore :${strarr[1]}'
buttato fuori 'Prezzo :${strarr[2]}'

Produzione:

Esegui lo script.

$bashsplit2.sh

Il seguente output apparirà dopo aver eseguito lo script.

Esempio 3: dividere la stringa senza la variabile $IFS

Questo esempio mostra come è possibile dividere il valore della stringa senza utilizzare $IFS in bash. Crea un file chiamato ' split3.sh ' e aggiungere il seguente codice. Secondo lo script, un valore di testo con i due punti (:) deve prendere come input per la scissione. Qui, il comando 'readarray' con l'opzione -d viene utilizzato per dividere i dati della stringa. L'opzione '-d' viene utilizzata per definire il carattere separatore nel comando come $IFS. Successivamente, viene utilizzato il ciclo 'for' per stampare gli elementi dell'array.

split3.sh

#!/bin/bash

#Leggi la stringa principale
buttato fuori 'Inserisci la stringa con i due punti (:) per dividere'
leggereprincipale

#Dividi la stringa in base al delimitatore, ':'
readarray-D:-Tstrarra<<< '$mainstr'
printf ' '

# Stampa ogni valore dell'array usando loop
per (( n=0; n< ${#strarr[*]}; n++))
fare
buttato fuori '${strarr[n]}'
fatto

Produzione:

Esegui lo script.

$bashsplit3.sh

Il seguente output apparirà dopo aver eseguito lo script.

Esempio-4: dividere la stringa con un delimitatore a più caratteri

Il valore della stringa è suddiviso da un singolo delimitatore di carattere in tutti gli esempi precedenti. In questo esempio viene mostrato come dividere la stringa utilizzando un delimitatore multi-carattere. Crea un file chiamato Times split4.sh e aggiungere il seguente codice. Qui, la variabile $text viene utilizzata per memorizzare i dati di una stringa. La variabile $delimiter viene utilizzata per assegnare un dato a più caratteri che viene utilizzato come delimitatore nelle istruzioni successive. La variabile $myarray viene utilizzata per memorizzare ogni dato suddiviso come elemento dell'array. Infine, tutti i dati suddivisi vengono stampati utilizzando il ciclo 'for'.

split4.sh

#!/bin/bash

#Definisci la stringa da dividere
testo='learnHTMLlearnPHPlearnMySQLlearnJavascript'

#Definisci delimitatore multi-carattere
delimitatore='imparare'
#Concatena il delimitatore con la stringa principale
corda=$testo$delimitatore

#Dividi il testo in base al delimitatore
mia matrice=()
mentre [[ $stringa ]];fare
miaarray+=( '${stringa%%'$delimitatore'*}' )
corda=${stringa#*'$delimitatore'}
fatto

#Stampa le parole dopo la divisione
pervalorein ${miarray[@]}
fare
buttato fuori -n '$valore'
fatto
printf ' '

Produzione:

Esegui lo script.

$bashsplit4.sh

Il seguente output apparirà dopo aver eseguito lo script.

Conclusione:

I dati della stringa devono essere suddivisi per scopi di programmazione diversi. In questo tutorial sono mostrati vari modi per suddividere i dati delle stringhe in bash. Spero che, dopo aver praticato gli esempi sopra, i lettori saranno in grado di dividere qualsiasi dato di stringa in base alle loro esigenze.

Per maggiori informazioni guarda il video !