Rimuovere un elemento specifico da un array in bash

Rimuovere un elemento specifico da un array in bash

Bash gestisce solo gli array associativi e gli array unidimensionali indicizzati. Negli script bash, gli array non consistono necessariamente in un gruppo di elementi associati. Gli elementi dell'array possono essere stringhe e numeri perché Bash non si distingue tra loro. In questo articolo, eseguiremo le operazioni di cancellazione sugli array di bash con approcci diversi. Dobbiamo conoscere la posizione dell'indice dell'elemento nell'array o nel tasto per rimuoverlo dall'array. Il comando "Unset" è comunemente usato in Bash per rimuovere un elemento.

Esempio 1: rimozione di un elemento di array specifico nello script bash

Il comando Unset viene utilizzato per cancellare il particolare elemento dall'array. Il comando Unset richiede il nome della variabile in cui è definito l'array e l'indice dell'elemento. Nella seguente sceneggiatura bash, creiamo prima la variabile "myarray" usando la parola chiave "dichiara" con l'opzione "-a". Quindi, la variabile "MyArray" viene inserita con gli elementi della stringa. Quindi, distribuiamo il comando "Unset" per eliminare l'elemento array. Il comando Unset viene passato con il nome della variabile array, "MyArray", come argomento. Il "myarray" è impostato con l'indice [2] che elimina l'elemento array posizionato in questo indice.

Successivamente, abbiamo il comando Echo utilizzato per visualizzare l'array aggiornato dopo l'operazione di cancellazione. L'espressione "MyArray [@]" viene utilizzata per stampare l'array in cui il simbolo "@" rappresenta l'indice dell'array.

#!/Bin/Bash
dichiara -a myArray = ("Panda" "Owl" "Cat" "Rabbit" "Bear")
UNSET MYARRAY [2]
echo "$ myarray [@]"

Mentre eliminiamo il valore dell'indice di "2" dall'array specificato usando il comando unset, il valore che viene posizionato all'interno dell'array sull'indice "2" è "gatto" che viene rimosso dall'array. E l'array modificato viene visualizzato nella seguente uscita. Si noti che l'indice di array in ogni momento inizia dal numero di "0":

Esempio 2: rimozione di un elemento di array specifico nello script bash tramite un indice relativo

Gli elementi vengono indirizzati dall'ultimo elemento se utilizziamo gli indici come -1, -2 e così via. Pertanto, possiamo anche eliminarli o modificarli per gli elementi precedenti usando l'ordinamento relativo. Facciamo il seguente script bash, in cui il primo passo della dichiarazione di una variabile per un array sta usando il comando "dichiara -a" della bash. La variabile array è intitolata "Lingue". Inseriamo quattro diversi linguaggi di programmazione al suo interno insieme al numero dell'indice. Successivamente, abbiamo un comando Bash Unset in cui la variabile "Lingue" è impostata con l'indice relativo "-3" per eliminare l'elemento array. Quindi, utilizziamo l'espressione "$ lingue [@]" per stampare l'array appena formato dopo aver usato il comando Echo. L'elemento particolare è inserito dall'array.

#!/bin/usr/env bash
dichiarare -a lingue = (
[0] = Java
[1] = Kotlin
[2] = Python
[3] = Scala
)
Lingue UNSET [-3]
echo "$ lingue [@]"

L'output visualizza l'array in cui il valore "kotlin" viene rimosso perché l'indice "-3" indica la direzione dell'indice inverso che è l'indice "1" dall'ordine predefinito. Quindi, è relativamente più semplice fare riferimento a elementi specifici in un ampio array.

Esempio 3: rimozione di un elemento di array specifico nello script bash usando Regex

La recente implementazione della sceneggiatura bash di rimuovere un elemento specifico dall'array dato è molto semplice da realizzare. Ora, abbiamo un altro caso in cui gli elementi di un array vengono rimossi da un altro array. I seguenti script bash rimuovono qualsiasi elemento dall'array che corrisponde a un regex. Dichiariamo prima la variabile "ARR1" che è regolata con un valore intero.

Quindi, creiamo un altro array che è "arr2" e inseriamo due valori interi presenti anche nel primo array, "arr1". Dopo questo, definiamo una variabile "risultato" che ha l'espressione ("$ arr1 [@]") che mostra che la variabile dei risultati ha tutti gli elementi di array di array "arr1" per stampare. Successivamente, impostiamo il per loop che itera su tutti gli elementi dell'array presenti nell'array "ARR2" e li archiviano nell'oggetto "Ele".

Successivamente, utilizziamo la variabile "risultato" che viene fornita con l'espressione "($ risultato [@]/*$ Ele*/)". L'espressione "risultato [@]" qui memorizza gli elementi di array dell'espressione "ARR1" e "$ Ele" ha gli elementi di array di "arr2". L '"ARR2" corrisponde a quegli elementi dall'array "ARR1" e li cancella dall'array "ARR1". Il comando Echo viene quindi distribuito per visualizzare gli elementi rimanenti dell'array "ARR1".

#!/Bin/Bash
ARR1 = (11 22 33 44 55 66 77 88 99)
arr2 = (22 77)
risultato = ("$ arr1 [@]")
per Ele in "$ arr2 [@]"; Fare
risultato = ($ risultato [@]/*$ ELE*/)
Fatto
Echo "ARR1 Nuovi elementi sono: $ risultato [@]"

Dopo aver abbinato il regex, l'output visualizza l'elemento in cui gli elementi "22" e "77" vengono rimossi da "ARR1".

Esempio 4: Rimozione dell'intero array nello script bash

Gli script bash di cui sopra vengono utilizzati per rimuovere gli elementi particolari dall'array. Possiamo anche rimuovere gli interi elementi dell'array specificando la variabile dell'array al comando unset. Qui, implementiamo l'operazione di eliminazione nello script bash. Il passaggio iniziale è la dichiarazione dell'array che abbiamo realizzato con il comando "dichiara -a".

Definiamo la variabile per l'array come "Straray". Quindi, aggiungiamo gli elementi della stringa all'interno dell'array. Successivamente, chiamiamo il comando Unset che prende il nome dell'array "Straray" senza alcun valore dell'indice. Questo approccio viene utilizzato per eliminare l'intero array nello script bash. Alla fine, impieghiamo i due comandi Echo per visualizzare l'array e le chiavi dell'array.

#!/Bin/Bash
dichiara -a straray = ("uno" "due" "tre" "quattro" "cinque")
UNSET STRARARAY
echo $ !Straray [@]
echo $ !Straray [@]

Cerchiamo di stampare gli elementi e le chiavi dello script di cui sopra, il che non restituisce alcun output. Poiché l'array non esiste più, quindi viene restituito un risultato vuoto.

Esempio 5: rimuovere un elemento di array specifico nello script bash con un altro approccio

Gli esempi precedenti utilizzano il comando nont per eliminare un elemento intero o specifico da un determinato array. Lì, abbiamo un'altra tecnica per eliminare l'elemento particolare dell'array senza usare il comando nont. Il seguente script bash è definito con l'array che ha i primi cinque caratteri. Quel array è archiviato in una variabile "chararray".

Quindi, la variabile "Chararray" viene nuovamente chiamata ed è specificata con l'espressione "$ Chararray [@]: 1". L'espressione rimuove l'elemento dell'array che è presente alla prima occorrenza nell'array poiché il valore dell'indice di "1" è fornito a "Chararray [@]". Dopo aver eliminato l'elemento specificato dall'array, il comando Echo genera l'array che contiene tutti gli elementi tranne l'elemento rimosso.

Chararray = (a b c d e f)
Chararray = ("$ chararray [@]: 1")
echo $ chararray [@]

L'elemento del personaggio di "A" non è mostrato nel seguente array di output perché viene eliminato tramite l'espressione "$ chararray [@]: 1".

Conclusione

L'articolo sull'eliminazione di un elemento specifico da un array in uno script bash viene spiegato concettualmente. Qui, abbiamo usato il comando Unset per rimuovere l'intero array e il particolare elemento dall'array. Il comando Unset rimuove anche l'elemento dall'array attraverso l'approccio degli indici relativi. La partita regex viene anche data per eliminare l'elemento dall'array. Inoltre, abbiamo incluso la partita Regex per rimuovere un determinato elemento da un array.