Bash Split String na matriz

Bash Split String na matriz
Você pode se encontrar em muitas situações em que deve dividir valores de string em matrizes ou outras estruturas de dados enquanto trabalha em um script de bash em um sistema Linux. Aqui, você deve limpar que o Bash não nos fornece a função dividida embutida para dividir qualquer corda. Mas sempre há uma alternativa a esses problemas. Portanto, estaremos usando os delimitadores para converter ou dividir algumas cordas em uma matriz. Vamos começar a analisar alguns exemplos no Ubuntu 20.04. Abra o terminal do shell primeiro usando o "Ctrl+Alt+T" na área de trabalho.

Exemplo 01

Declaramos uma variável "str" ​​na concha com um valor de string nele. Aqui, usamos a variável "ifs" como um delimitador para dividir uma string "str". O delimitador "ses" contém "espaço" como seu valor. Isso significa que a string será dividida em uma matriz usando o espaço entre seus valores. Agora, o loop "for" é usado aqui para iterar a string "str". Dentro da cláusula "fazer", cada elemento de uma variável "str" ​​será exibido como uma matriz. Após o término do loop, o terminal exibe a string em uma forma de matriz conforme a imagem abaixo.

Exemplo 02

Vamos ter outro exemplo para obter uma saída um pouco diferente. Você pode ver claramente que a string contém "", personagem após cada palavra nela. Este personagem especial será usado como delimitador. Então, declaramos "", como um valor para a variável "ifs".

] O loop "for" foi inicializado aqui novamente para iterar a variável de string "str". Dentro da cláusula "fazer" do loop "for", a declaração de eco foi usada para exibir cada palavra separadamente com o número do índice, conforme separado pelo valor variável "ifs". Após o término do loop, o programa exibe cada palavra de string separadamente na forma de uma matriz. O personagem "" é responsável por esse tipo de divisão entre valores de string. Como resultado, temos 5 valores na forma de uma matriz de uma única variável de string "str".

Exemplo 03

Vamos ter outro exemplo de dividir uma string em uma matriz dentro do arquivo Bash. Então, você tem que criar um arquivo bash “teste.sh ”com uma consulta de toque na concha, como mencionado abaixo.

Teste de Touch.sh

Agora, abra o arquivo recém -criado em um editor para escrever um script bash. Temos utilizado o editor "GNU Nano" para esse fim. Você pode utilizar o editor Vim também.

$ nano teste.sh

Dentro do arquivo Bash, adicionamos a extensão Bash primeiro para tornar este código executável com o comando bash no shell. Depois disso, uma variável "str" ​​foi declarada e inicializada com um longo valor de sequência. A variável "ifs" foi declarada e atribuída com um valor "espaço". A declaração de leitura foi usada aqui para ler os dados de uma variável de string "STR" como uma matriz com a ajuda da bandeira "-ra" e salva na nova variável "arr".

A declaração de eco calcula e exibe o tamanho de uma variável "arr", eu.e., variedade. O loop "for" está aqui para iterar os valores dos valores da matriz, eu.e., “ARR” em uma sequência e exibido dentro do shell usando a instrução PRIMF. O programa termina aqui. Salve seu código com o "Ctrl+S" e deixe o editor usando o atalho "Ctrl+X".

Execute seu script bash recém -criado com o comando Bash junto com o nome de um arquivo Bash, eu.e., "teste.sh ”. A execução do script Bash mostra primeiro o tamanho de uma string "str" ​​i.e., Variedade. Depois disso, o terminal exibiu os valores de uma variável string na forma de uma matriz, i.e., cada palavra separada. Um total de 9 palavras foram exibidas na concha, como mostrado abaixo.

Teste de $ bash.sh

Exemplo 04

Vamos fazer outra ilustração para dividir uma corda em uma matriz. Portanto, abra o mesmo arquivo de código e atualize a variável da string "str". Adicionamos 6 palavras na corda separada por uma vírgula. Esta vírgula será usada como um delimitador na variável "ifs". A declaração de leitura foi ler as palavras de uma string "str" ​​como uma matriz separadamente e salvar cada uma delas em uma variável "arr". O delimitador trabalha aqui e separa cada palavra de uma string.

As 6 declarações de eco foram usadas aqui para exibir todos os valores da variável "ARR" usando os índices de palavras. Você pode ver a sintaxe para assumir todos os valores por índice na imagem mostrada.

Depois de executar o código no shell com a ajuda de uma consulta Bash, temos 6 linhas de saída. Cada palavra de uma string é salva separadamente na variável da matriz "arr" e exibida com a ajuda de índices.

Teste de $ bash.sh

Exemplo 05

Vamos ter nosso último exemplo de dividir um valor de string em uma matriz. Desta vez, não estamos usando a variável "ifs" como delimitador para dividir uma corda. Usaremos a bandeira "TR" para fazer isso. Então, abra o arquivo “Teste.sh ”em um editor de nano para atualizá -lo. Adicione a extensão do BASH na primeira linha.

A variável de tipo de string "str" ​​foi inicializada. Outra variável, "ARR" tem sido usando o valor variável "str" ​​e dividindo -o em partes usando a bandeira "TR". O delimitador "TR" contém espaço como seu valor. O loop "for" está iterar os valores variáveis ​​"arr" com a ajuda de índices. Cada valor será exibido separadamente na forma de uma matriz.

Depois de executar o código BASH, obtivemos o resultado em um formulário de matriz. Cada palavra em uma string "str" ​​é separada e convertida em um valor independente, eu.e., Elemento da matriz.

Teste de $ bash.sh

Conclusão

Neste artigo, discutimos vários exemplos para dividir um valor de string em uma matriz. Para esse fim, usamos a variável delimitadora “ifs” e os métodos “tr”. Todos os exemplos são muito fáceis de entender e podem ser implementados sem nenhum problema.