Usando $ ifs variável
A variável de shell especial $ ifs é usada no Bash para dividir uma corda em palavras. $ Ifs A variável é chamada de separador de campo interno (IFS) usado para atribuir o delimitador específico para dividir a string. Os limites das palavras são identificados em Bash por $ ses. O espaço em branco é o valor do delimitador padrão para esta variável. Qualquer outro valor como '\ t', '\ n', '-' etc. Pode ser usado como delimitador. Depois de atribuir o valor à variável $ ifs, o valor da string pode ser lido por duas opções. Estes são '-r' e '-a'. A opção, '-r' é usada para ler o barro. A string pode ser dividida sem usar $ ifs variável em bash. Diferentes maneiras de dividir dados de string (com $ ifs ou sem $ ifs) são mostrados nos exemplos a seguir.
Exemplo 1: string dividida com base no espaço
O valor da string é dividido pelo espaço branco por padrão. Crie um arquivo chamado 'Split1.sh 'e adicione o seguinte código. Aqui, $ Variável de texto é usado para atribuir um valor de string. A variável shell, $ ses é usada para atribuir o caractere que será usado para dividir os dados da string. O espaço é usado neste script como separador. A opção '-a' é usada com o comando de leitura para armazenar os dados divididos em uma variável de matriz denominada $ STRARR. O loop 'para' é usado para ler cada elemento da matriz, $ Salarr.
split1.sh
#!/BIN/BASH
#Define o valor da string
texto = "Bem -vindo ao Linuxhint"
# Defina o espaço como o delimitador
Ifs = "
#Leia as palavras divididas em uma matriz baseada em delimitador de espaço
Leia -um Starr <<< "$text"
#CONTE as palavras totais
eco "Existem $ #Starr [*] palavras no texto."
# Imprima cada valor da matriz usando o loop
para Val em "$ SARRARR [@]";
fazer
printf "$ val \ n"
feito
Saída:
Execute o script.
$ Bash Split1.sh
A saída a seguir aparecerá após a execução do script.
Exemplo 2: Split String baseada em um personagem específico
Qualquer caractere específico pode ser usado como separador para dividir o valor da string. Crie um arquivo chamado split2.sh e adicione o seguinte código. Aqui, o nome do livro, o nome do autor e o valor do preço são tomados adicionando vírgula (,) como uma string de entrada. Em seguida, o valor da string é dividido e armazenado em uma matriz baseada no valor da variável shell, $ ses. Cada valor dos elementos da matriz é impresso pelo valor do índice.
split2.sh
#!/BIN/BASH
#Leia o valor da string
eco "Digite o nome do livro, nome do autor e preço separando a vírgula. "
Leia o texto
# Defina vírgula como delimitador
Ifs = ','
#Leia as palavras divididas em uma matriz baseada no delimitador de vírgula
Leia -um Starr <<< "$text"
#Print as palavras divididas
eco "Nome do livro: $ Starr [0]"
eco "Nome do autor: $ SARRARR [1]"
eco "Preço: $ SARRARR [2]"
Saída:
Execute o script.
$ Bash Split2.sh
A saída a seguir aparecerá após a execução do script.
Exemplo-3: divida a string sem $ ifs variável
Este exemplo mostra como o valor da string pode ser dividido sem usar $ ses em bash. Crie um arquivo chamado 'split3.sh ' e adicione o seguinte código. De acordo com o script, um valor de texto com o cólon(:) tem que tomar como entrada para dividir. Aqui, o comando 'readArray' com -d opção é usado para dividir os dados da string. A opção '-d' é usada para definir o caractere separador no comando como $ ifs. Em seguida, o loop 'para' é usado para imprimir os elementos da matriz.
split3.sh
#!/BIN/BASH
#Leia a sequência principal
eco "Digite a corda com o cólon (:) para dividir"
Leia o Mainstr
#Split a string baseada no delimitador, ':'
ReadArray -d: -t Salarr <<< "$mainstr"
printf "\ n"
# Imprima cada valor da matriz usando o loop
para ((n = 0; n < $#strarr[*]; n++))
fazer
eco "$ SARRARR [n]"
feito
Saída:
Execute o script.
$ Bash Split3.sh
A saída a seguir aparecerá após a execução do script.
Exemplo-4: divida a string com um delimitador de vários caracteres
O valor da string é dividido por um delimitador de um único caractere em todos os exemplos anteriores. Como você pode dividir a string usando delimitador de vários caracteres é mostrado neste exemplo. Crie um arquivo chamado 'split4.sh ' e adicione o seguinte código. Aqui, $ text variável é usado para armazenar dados de string. A variável $ delimiter é usada para atribuir dados de vários caracteres que são usados como delimitador nas próximas declarações. $ variável MyArray é usada para armazenar cada dados divididos como um elemento de matriz. Finalmente, todos os dados divididos são impressos usando 'para' loop.
split4.sh
#!/BIN/BASH
#Define a string para dividir
text = "LearnHtMllearnphPLEARNMYSQLLEARNJAVASCRIP"
#Define Delimitador de vários caracteres
delimiter = "Aprenda"
#CONCATENATE O delimitador com a sequência principal
string = $ text $ delimiter
#Split o texto baseado no delimitador
MyArray = ()
enquanto [[$ string]]; fazer
MyArray+= ("$ String %%" $ delimiter "*")
String = $ String#*"$ delimiter"
feito
#Print as palavras após a divisão
Para valor em $ MyArray [@]
fazer
eco -n "$ valor"
feito
printf "\ n"
Saída:
Execute o script.
$ Bash Split4.sh
A saída a seguir aparecerá após a execução do script.
Os dados da string precisam dividir para diferentes fins de programação. Várias maneiras de dividir dados de string no bash são mostradas neste tutorial. Espero que, depois de praticar os exemplos acima, os leitores poderão dividir qualquer dados de string com base em seus requisitos.
Para mais informações, assista ao vídeo!