Remova um elemento específico de uma matriz em Bash

Remova um elemento específico de uma matriz em Bash

Bash lida apenas com as matrizes associativas e as matrizes numericamente indexadas unidimensionais. Em scripts bash, as matrizes não consistem necessariamente de um grupo de elementos associados. Os elementos da matriz podem ser strings e números porque Bash não diferencia entre eles. Neste artigo, realizaremos as operações de exclusão nas matrizes Bash com diferentes abordagens. Precisamos conhecer a posição do índice do elemento na matriz ou chave para removê -la da matriz. O comando "Unset" é comumente usado em Bash para remover um elemento.

Exemplo 1: Removendo um elemento de matriz específico no script Bash

O comando unset é utilizado para apagar o elemento particular da matriz. O comando unset requer o nome da variável onde a matriz é definida, bem como o índice do elemento. No script Bash a seguir, primeiro criamos a variável "MyArray" usando a palavra-chave "declarar" com a opção "-a". Então, a variável "MyArray" é inserida com os elementos da string. Em seguida, implantamos o comando "Unset" para excluir o elemento da matriz. O comando unset é passado com o nome da variável da matriz, "MyArray", como um argumento. O "MyArray" está definido com o índice [2] que exclui o elemento de matriz que é colocado neste índice.

Em seguida, temos o comando Echo que é usado para exibir a matriz atualizada após a operação de exclusão. A expressão "MyArray [@]" é usada para imprimir a matriz em que o símbolo "@" representa o índice de matriz.

#!/BIN/BASH
declarar -a myarray = ("panda" "coruja" "gato" "rabbit" "urso")
Unset MyArray [2]
eco "$ MyArray [@]"

À medida que excluímos o valor do índice de "2" da matriz especificada usando o comando unset, o valor que é colocado dentro da matriz no índice "2" é "gato" que é removido da matriz. E a matriz modificada é exibida na seguinte saída. Observe que o índice de matriz em todos os momentos começa com o número de "0":

Exemplo 2: Removendo um elemento de matriz específico no script Bash por meio de um índice relativo

Os elementos são referidos do último elemento se usarmos os índices como -1, -2 e assim por diante. Assim, também podemos excluí -los ou alterá -los para os elementos anteriores usando pedidos relativos. Vamos ter o seguinte script Bash, onde o primeiro passo de declarar uma variável para uma matriz é usar o comando "declarar -a" da festa. A variável da matriz é intitulada "Línguas". Inserimos quatro linguagens de programação diferentes dentro dele junto com o número do índice. Depois disso, temos um comando Bash Unset, onde a variável "idiomas" é definida com o índice relativo "-3" para excluir o elemento da matriz. Em seguida, usamos a expressão “$ linguagens [@]” para imprimir a matriz recém -formada depois de usar o comando echo. O elemento em particular não é definido da matriz.

#!/bin/usr/Env Bash
declarar -a um idioma = (
[0] = java
[1] = Kotlin
[2] = Python
[3] = scala
)
Idiomas não definidos [-3]
eco "$ linguagens [@]"

A saída exibe a matriz em que o valor "Kotlin" é removido porque o índice "-3" indica a direção do índice reverso que é o índice "1" do pedido padrão. Portanto, é relativamente mais simples se referir a itens específicos em uma grande matriz dada.

Exemplo 3: Removendo um elemento de matriz específico no script Bash usando Regex

A recente implementação do script Bash de remover um elemento específico da matriz especificada é muito simples de realizar. Agora, temos outro caso em que os elementos de uma matriz são removidos de outra matriz. Os seguintes scripts bash removem qualquer elemento da matriz que corresponde a um regex. Primeiro declaramos a variável "ARR1" que é ajustada com algum valor inteiro.

Em seguida, criamos outra matriz que é "ARR2" e inserimos dois valores inteiros que também estão presentes na primeira matriz, "arr1". Depois disso, definimos uma variável "resultado" que possui a expressão ("$ arr1 [@]"), que mostra que a variável de resultados possui todos os elementos da matriz da matriz "ARR1" para imprimir. Em seguida, definimos o loop for que itera sobre todos os elementos da matriz que estão presentes na matriz "ARR2" e os armazenam no objeto "ele".

Em seguida, usamos a variável "resultado" que é fornecida com a expressão "($ resultado [@]/*$ ele*/)". A expressão "Result [@]" aqui armazena os elementos da matriz do "ARR1" e da expressão "$ ele" tem os elementos da matriz de "ARR2". O "ARR2" corresponde a esses elementos da matriz "ARR1" e os exclui da matriz "ARR1". O comando Echo é então implantado para exibir os elementos restantes da matriz "ARR1".

#!/BIN/BASH
arr1 = (11 22 33 44 55 66 77 88 99)
arr2 = (22 77)
resultado = ("$ arr1 [@]")
para ele em "$ arr2 [@]"; fazer
resultado = ($ resultado [@]/*$ ele*/)
feito
eco "ARR1 Novos elementos são: $ resultado [@]"

Depois de corresponder ao regex, a saída exibe o elemento em que os elementos "22" e "77" são removidos do "ARR1".

Exemplo 4: Removendo toda a matriz no script Bash

Os scripts bash acima mencionados são usados ​​para remover os elementos específicos da matriz. Também podemos remover os elementos inteiros da matriz especificando a variável de matriz para o comando Unset. Aqui, implementamos a operação de exclusão no script Bash. A etapa inicial é a declaração da matriz que realizamos com o comando "declarar -a".

Definimos a variável para a matriz como "Strarray". Em seguida, adicionamos os itens de string dentro da matriz. Depois disso, chamamos o comando unset que leva o nome da matriz "Strarray" sem qualquer valor de índice. Esta abordagem é usada para excluir toda a matriz no script de bash. No final, empregamos os dois comandos de eco para exibir a matriz e as chaves da matriz.

#!/BIN/BASH
Declare -Um Strarray = ("One" "Two" "Three" "Four" "Cinco")
desarrumado
eco $ !Strarray [@]
eco $ !Strarray [@]

Tentamos imprimir os elementos e chaves do script acima mencionado, que não retornam nenhuma saída. Como a matriz não existe mais, portanto um resultado em branco é retornado.

Exemplo 5: Removendo um elemento de matriz específico no script Bash com outra abordagem

Os exemplos anteriores usam o comando Unset para excluir um elemento inteiro ou específico de uma determinada matriz. Lá, temos outra técnica para excluir o elemento específico da matriz sem usar o comando unset. O script Bash a seguir é definido com a matriz que tem os cinco primeiros caracteres. Essa matriz é armazenada em uma variável “CharArray”.

Então, a variável "CharArray" é chamada novamente e é especificada com a expressão "$ CharArray [@]: 1". A expressão remove o elemento da matriz que está presente na primeira ocorrência na matriz, pois o valor do índice de "1" é fornecido ao "CharArray [@]". Depois de eliminar o elemento especificado da matriz, o comando echo gera a matriz que contém todos os elementos, exceto o elemento removido.

CharArray = (A B C D E F)
CharArray = ("$ CharArray [@]: 1")
eco $ CharArray [@]

O elemento de caractere de "A" não é mostrado na seguinte matriz de saída porque é excluída através da expressão "$ CharArray [@]: 1".

Conclusão

O artigo sobre a exclusão de um elemento específico de uma matriz em um script bash é explicado conceitualmente. Aqui, usamos o comando unset para remover toda a matriz e o elemento específico da matriz. O comando unset também remove o elemento da matriz através da abordagem de índices relativos. A partida REGEX também é dada para excluir o elemento da matriz. Além disso, incluímos a partida regex para remover um determinado elemento de uma matriz.