Utilizzando la variabile $ IFS
La variabile Special Shell $ IFS viene utilizzata in Bash per dividere una stringa in parole. La variabile $ IFS è chiamata separatore di campo interno (IFS) utilizzato per assegnare il delimitatore specifico per la divisione della stringa. I confini delle parole sono identificati in bash da $ ifs. Lo spazio bianco è il valore delimitatore predefinito per questa variabile. Qualsiasi altro valore come "\ t", '\ n', '-' ecc. Può essere usato 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 Backslash (\) come personaggio piuttosto che sfuggire al carattere e l'opzione '-A' viene utilizzata per archiviare le parole split in una variabile di array. La stringa può essere divisa senza usare la variabile $ ifs in bash. Modi diversi per dividere i dati di stringa (con $ ifs o senza $ ifs) sono mostrati nei seguenti esempi.
Esempio-1: stringa divisa in base allo spazio
Il valore della stringa è diviso per lo spazio bianco per impostazione predefinita. Crea un file denominato 'split1.sh 'e aggiungi il seguente codice. Qui, la variabile $ text viene utilizzata per assegnare un valore di stringa. La variabile shell, $ IFS viene utilizzata per assegnare il carattere che verrà utilizzato per dividere i dati della stringa. Lo spazio è usato in questo script come separatore. L'opzione '-A' viene utilizzata con il comando di lettura per archiviare i dati divisi in una variabile di array denominata $ Strarr. "Per" loop viene utilizzato per leggere ogni elemento dell'array, $ Strarr.
split1.sh
#!/Bin/Bash
#Definire il valore della stringa
text = "Benvenuti a LinuxHint"
# Imposta lo spazio come delimitatore
Ifs = "
#Redi le parole divise in un array basato sul delimitatore dello spazio
Leggi -A Strarr <<< "$text"
#Count le parole totali
echo "Ci sono $ #strarr [*] parole nel testo."
# Stampa ogni valore dell'array utilizzando il loop
per val in "$ strarr [@]";
Fare
printf "$ val \ n"
Fatto
Produzione:
Esegui lo script.
$ Bash Split1.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 usato come separatore per dividere il valore della stringa. Crea un file denominato split2.sh e aggiungi 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 è diviso e archiviato in un array basato sul valore della variabile della shell, $ ifs. Ogni valore degli elementi dell'array è stampato dal valore dell'indice.
split2.sh
#!/Bin/Bash
#Redi il valore della stringa
echo "Immettere il nome del libro, il nome dell'autore e il prezzo separando la virgola. "
Leggi il testo
# Imposta la virgola come delimitatore
Ifs = ','
#Redi le parole divise in un array basato sul delimitatore della virgola
Leggi -A Strarr <<< "$text"
#Print le parole divise
Echo "Nome del libro: $ Strarr [0]"
Echo "Nome autore: $ Strarr [1]"
Echo "Price: $ Strarr [2]"
Produzione:
Esegui lo script.
$ Bash Split2.sh
Il seguente output apparirà dopo aver eseguito lo script.
Esempio-3: dividere la stringa senza variabile $ IFS
Questo esempio mostra come il valore della stringa può essere diviso senza usare $ ifs in bash. Crea un file denominato 'split3.sh' e aggiungi il seguente codice. Secondo la sceneggiatura, un valore di testo con il colon(:) deve prendere come input per la divisione. Qui, il comando "readarray" con -d opzione viene utilizzato per dividere i dati della stringa. L'opzione '-D' viene utilizzata per definire il carattere del separatore nel comando come $ ifs. Successivamente, "per" loop viene utilizzato per stampare gli elementi dell'array.
split3.sh
#!/Bin/Bash
#Redi la stringa principale
echo "Immettere la stringa con il colon (:) per dividere"
Leggi il mainstr
#Split la stringa in base al delimitatore, ":"
readarray -d: -t Strarr <<< "$mainstr"
printf "\ n"
# Stampa ogni valore dell'array usando loop
per ((n = 0; n < $#strarr[*]; n++))
Fare
echo "$ Strarr [n]"
Fatto
Produzione:
Esegui lo script.
$ bash divish3.sh
Il seguente output apparirà dopo aver eseguito lo script.
Esempio-4: dividi la stringa con un delimitatore multi-character
Il valore della stringa è diviso da un delimitatore a singolo carattere in tutti gli esempi precedenti. Come è possibile dividere la stringa usando il delimitatore multi-character è mostrato in questo esempio. Crea un file denominato 'Split4.sh' e aggiungi il seguente codice. Qui, la variabile $ text viene utilizzata per archiviare un dati di stringa. La variabile del delimitatore $ viene utilizzata per assegnare un dati multi-character utilizzato come delimitatore nelle dichiarazioni successive. La variabile $ myarray viene utilizzata per archiviare ogni dati diviso come elemento array. Infine, tutti i dati divisi sono stampati utilizzando 'per' loop.
split4.sh
#!/Bin/Bash
#Defina la stringa da dividere
text = "LearnHtmllearnphplearnmysqllearnjavascript"
#Define Delimitatore multi-character
delimiter = "impara"
#Concatena il delimitatore con la stringa principale
string = $ text $ delimitatore
#Split il testo in base al delimitatore
myArray = ()
mentre [[$ string]]; Fare
myArray+= ("$ String %%" $ delimitatore "*")
String = $ String#*"$ Delimiter"
Fatto
#Print le parole dopo la divisione
per valore in $ myarray [@]
Fare
echo -n "$ value"
Fatto
printf "\ n"
Produzione:
Esegui lo script.
$ bash divish4.sh
Il seguente output apparirà dopo aver eseguito lo script.
I dati della stringa devono dividere per diversi scopi di programmazione. In questo tutorial vari modi per dividere i dati delle stringhe in bash sono. Speranza, dopo aver praticato gli esempi di cui sopra, i lettori saranno in grado di dividere tutti i dati di stringa in base ai loro requisiti.
Per ulteriori informazioni, guarda il video!