Eliminar un elemento específico de una matriz en Bash

Eliminar un elemento específico de una matriz en Bash

Bash maneja solo las matrices asociativas y las matrices unidimensionales indexadas numéricamente. En las secuencias de comandos bash, las matrices no consisten necesariamente en un grupo de elementos asociados. Los elementos de la matriz pueden ser cadenas y números porque Bash no diferencia entre ellos. En este artículo, realizaremos las operaciones de eliminación en las matrices de bash con diferentes enfoques. Necesitamos conocer la posición de índice del elemento en la matriz o clave para eliminarlo de la matriz. El comando "unset" se usa comúnmente en Bash para eliminar un elemento.

Ejemplo 1: Eliminar un elemento de matriz específico en el script bash

El comando unset se utiliza para borrar el elemento particular de la matriz. El comando unset requiere el nombre de la variable donde se define la matriz, así como el índice del elemento. En el siguiente script bash, primero creamos la variable "myArray" usando la palabra clave "declarar" con la opción "-a". Luego, la variable "myArray" se inserta con los elementos de la cadena. Luego, implementamos el comando "unset" para eliminar el elemento de matriz. El comando unset se pasa con el nombre de la variable de matriz, "myArray", como argumento. El "myArray" se establece con el índice [2] que elimina el elemento de matriz que se coloca en este índice.

A continuación, tenemos el comando ECHO que se utiliza para mostrar la matriz actualizada después de la operación de eliminación. La expresión "myArray [@]" se usa para imprimir la matriz donde el símbolo "@" representa el índice de matriz.

#!/bin/bash
declarar -a myArray = ("panda" "búho" "gato" "conejo" oso ")
Unset MyArray [2]
echo "$ myArray [@]"

A medida que eliminamos el valor de índice de "2" de la matriz especificada utilizando el comando unset, el valor que se coloca dentro de la matriz en el índice "2" es "CAT" que se elimina de la matriz. Y la matriz modificada se muestra en la siguiente salida. Tenga en cuenta que el índice de matriz en todo momento comienza desde el número de "0":

Ejemplo 2: Eliminar un elemento de matriz específico en el script bash a través de un índice relativo

Los elementos se remiten desde el último elemento si usamos los índices como -1, -2, y así sucesivamente. Por lo tanto, también podemos eliminarlos o alterarlos para los elementos anteriores utilizando el pedido relativo. Tengamos el siguiente script bash, donde el primer paso de declarar una variable para una matriz es usar el comando "declarar -a" de la fiesta. La variable de matriz se titula "Idiomas". Insertamos cuatro lenguajes de programación diferentes dentro de él junto con el número de índice. Después de eso, tenemos un comando BASH Unset donde la variable "Idiomas" se establece con el índice relativo "-3" para eliminar el elemento de matriz. Luego, usamos la expresión "$ idiomas [@]" para imprimir la matriz recién formada después de usar el comando echo. El elemento particular no es establecido desde la matriz.

#!/bin/usr/envash
declarar -a idiomas = (
[0] = Java
[1] = Kotlin
[2] = Python
[3] = Scala
)
Idiomas unset [-3]
echo "$ idiomas [@]"

La salida muestra la matriz donde se elimina el valor "kotlin" porque el índice "-3" indica la dirección del índice inverso que es el índice "1" del orden predeterminado. Por lo tanto, es relativamente más simple referirse a elementos específicos en una gran matriz dada.

Ejemplo 3: Eliminar un elemento de matriz específico en el script bash usando regex

La implementación reciente del script bash de eliminar un elemento específico de la matriz dada es muy simple de lograr. Ahora, tenemos otro caso en el que se eliminan los elementos de una matriz de otra matriz. Los siguientes scripts bash eliminan cualquier elemento de la matriz que coincida con una regex. Primero declaramos la variable "ARR1" que se ajusta con algún valor entero.

Luego, creamos otra matriz que es "ARR2" e insertamos dos valores enteros que también están presentes en la primera matriz, "ARR1". Después de esto, definimos una variable de "resultado" que tiene la expresión ("$ arr1 [@]") que muestra que la variable de resultados tiene todos los elementos de matriz de la matriz "ARR1" para imprimir para imprimir. A continuación, establecemos el for-bucle que itera sobre todos los elementos de la matriz que están presentes en la matriz "ARR2" y los almacenamos en el objeto "Ele".

A continuación, usamos la variable "resultado" que se proporciona con la expresión "($ resultado [@]/*$ ele*/)". La expresión "Result [@]" aquí almacena los elementos de matriz del "ARR1" y la expresión "$ ele" tiene los elementos de matriz de "ARR2". El "ARR2" coincide con esos elementos de la matriz "ARR1" y los elimina de la matriz "ARR1". Luego se implementa el comando ECHO para mostrar los elementos restantes de la matriz "ARR1".

#!/bin/bash
arr1 = (11 22 33 44 55 66 77 88 99)
arr2 = (22 77)
resultado = ("$ arr1 [@]")
para ele en "$ arr2 [@]"; hacer
resultado = ($ resultado [@]/*$ ele*/)
hecho
echo "ARR1 Los elementos nuevos son: $ resultado [@]"

Después de hacer coincidir el Regex, la salida muestra el elemento donde se eliminan los elementos "22" y "77" del "ARR1".

Ejemplo 4: Eliminar toda la matriz en el script bash

Los scripts bash mencionados se utilizan para eliminar los elementos particulares de la matriz. También podemos eliminar los elementos completos de la matriz especificando la variable de matriz en el comando unset. Aquí, implementamos la operación de eliminación en el script bash. El paso inicial es la declaración de la matriz que logramos con el comando "declarar -a".

Definimos la variable para la matriz como "Strarray". Luego, agregamos los elementos de cadena dentro de la matriz. Después de eso, llamamos al comando unset que toma el nombre de la matriz "Strarray" sin ningún valor de índice. Este enfoque se utiliza para eliminar toda la matriz en el script bash. Al final, empleamos los dos comandos de eco para mostrar la matriz y las teclas de la matriz.

#!/bin/bash
declarar -a strraRray = ("one" "dos" "tres" "cuatro" "cinco")
Strarray Unset
Echo $ !Strarray [@]
Echo $ !Strarray [@]

Intentamos imprimir los elementos y claves del script mencionados anteriormente, que no devuelven salida. Dado que la matriz ya no existe, por lo tanto, se devuelve un resultado en blanco.

Ejemplo 5: Eliminar un elemento de matriz específico en el script bash con otro enfoque

Los ejemplos anteriores usan el comando unset para eliminar un elemento completo o específico de una matriz determinada. Allí, tenemos otra técnica para eliminar el elemento particular de la matriz sin usar el comando unset. El siguiente script bash se define con la matriz que tiene los primeros cinco caracteres. Esa matriz se almacena en una variable "chararray".

Luego, la variable "chararray" se llama nuevamente y se especifica con la expresión "$ chararray [@]: 1". La expresión elimina el elemento de la matriz que está presente en la primera ocurrencia en la matriz, ya que el valor de índice de "1" se proporciona al "CharArray [@]". Después de eliminar el elemento especificado de la matriz, el comando ECHO genera la matriz que contiene todos los elementos excepto el elemento eliminado.

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

El elemento de caracteres de "A" no se muestra en la siguiente matriz de salida porque se elimina a través de la expresión "$ CharArray [@]: 1".

Conclusión

El artículo sobre la eliminación de un elemento específico de una matriz en un script bash se explica conceptualmente. Aquí, usamos el comando unset para eliminar la matriz completa y el elemento particular de la matriz. El comando unset también elimina el elemento de la matriz a través del enfoque de índices relativos. El partido regex también se da para eliminar el elemento de la matriz. Además, incluimos el partido regex para eliminar un cierto elemento de una matriz.