Fjern et spesifikt element fra en matrise i bash

Fjern et spesifikt element fra en matrise i bash

Bash håndterer bare assosiative matriser og den endimensjonale numerisk indekserte matriser. I bash -skripting består ikke nødvendigvis matriser av en gruppe tilknyttede elementer. Array -elementene kan være strenger og tall fordi bash ikke skiller mellom dem. I denne artikkelen vil vi utføre slettingsoperasjonene på bash -matriser med forskjellige tilnærminger. Vi må kjenne indeksposisjonen til elementet i matrisen eller nøkkelen for å fjerne det fra matrisen. Kommandoen “usett” brukes ofte i bash for å fjerne et element.

Eksempel 1: Fjerning av et spesifikt matriseelement i bashskriptet

UNSET -kommandoen brukes til å slette det aktuelle elementet fra matrisen. UNSET -kommandoen krever navnet på variabelen der matrisen er definert så vel som elementets indeks. I det følgende Bash-skriptet oppretter vi først "MyArray" -variabelen ved hjelp av "DECLARE" nøkkelordet med "-A" -alternativet. Deretter settes "MyArray" -variabelen inn med strengelementene. Deretter distribuerer vi “Unset” -kommandoen for å slette matriselementet. UNSET -kommandoen sendes med array -variabelnavnet “MyArray”, som et argument. "MyArray" er satt med indeksen [2] som sletter matriselementet som er plassert på denne indeksen.

Deretter har vi Echo -kommandoen som brukes til å vise den oppdaterte matrisen etter slettingsoperasjonen. Uttrykk "MyArray [@]" brukes til å skrive ut matrisen der "@" -symbolet representerer arrayindeksen.

#!/bin/bash
erklære -A MyArray = ("Panda" "Owl" "Cat" "Rabbit" "Bear")
Unset MyArray [2]
ekko "$ myArray [@]"

Når vi sletter indeksverdien til “2” fra den spesifiserte matrisen ved hjelp av UNSET -kommandoen, er verdien som er plassert inne i matrisen til indeksen “2” “Cat” som fjernes fra matrisen. Og den modifiserte matrisen vises i følgende utgang. Merk at matriseindeksen til enhver tid begynner fra antall “0”:

Eksempel 2: Fjerning av et spesifikt matriseelement i bashskriptet via en relativ indeks

Elementene blir henvist fra det siste elementet hvis vi bruker indeksene som -1, -2, og så videre. Dermed kan vi også slette eller endre dem for de tidligere elementene ved hjelp av relativ bestilling. La oss ha følgende bash -skript, der det første trinnet med å erklære en variabel for en matrise er å bruke “Delcære -A” -kommandoen over bash. Array -variabelen har tittelen “Språk”. Vi setter inn fire forskjellige programmeringsspråk inni det sammen med indeksnummeret. Etter det har vi en bash unset-kommando der "språk" -variabelen er satt med "-3" relativ indeks for å slette matriselementet. Deretter bruker vi “$ språk [@]” -uttrykket for å skrive ut det nydannede arrayet etter å ha brukt Echo -kommandoen. Det spesielle elementet er usett fra matrisen.

#!/bin/usr/env bash
erklære -A språk = (
[0] = Java
[1] = Kotlin
[2] = Python
[3] = Scala
)
UNSET språk [-3]
ekko "$ språk [@]"

Utgangen viser matrisen der "Kotlin" -verdien fjernes fordi "-3" -indeksen indikerer omvendt indeksretning som er "1" -indeksen fra standardordren. Derfor er det relativt enklere å referere til spesifikke elementer i en stor gitt matrise.

Eksempel 3: Fjerning av et spesifikt matriseelement i bashskriptet ved hjelp av regex

Den nylige implementeringen av bashskriptet for å fjerne et spesifikt element fra den gitte matrisen er veldig enkel å oppnå. Nå har vi en annen sak der elementene i en matrise fjernes fra en annen matrise. Følgende bashskript fjerner ethvert element fra matrisen som samsvarer med en regex. Vi erklærer først "ARR1" -variabelen som er justert med noe heltallverdi.

Deretter oppretter vi en annen matrise som er "ARR2" og setter inn to heltallverdier som også er til stede i den første matrisen, "ARR1". Etter dette definerer vi en "resultat" -variabel som har uttrykket ("$ arr1 [@]") som viser at resultatvariabelen har alle matriseelementene i "arr1" -array for å skrive ut. Deretter setter vi for-loop som itererer over alle matriseelementene som er til stede i “Arr2” -arrayen og lagrer dem i “Ele” -objektet.

Deretter bruker vi "Resultat" -variabelen som er utstyrt med "($ resultatet [@]/*$ Ele*/)" -uttrykk. Uttrykk "Resultat [@]" lagrer her arrayelementene i "ARR1" og "$ Ele" -uttrykket har arrayelementene til "arr2". “ARR2” samsvarer med elementene fra “ARR1” -arrayen og sletter dem fra “ARR1” -arrayen. Echo -kommandoen blir deretter distribuert for å vise de gjenværende elementene i "ARR1" -arrayen.

#!/bin/bash
ARR1 = (11 22 33 44 55 66 77 88 99)
ARR2 = (22 77)
resultat = ("$ arr1 [@]")
for ele i "$ arr2 [@]"; gjøre
Resultat = ($ Resultat [@]/*$ Ele*/)
Ferdig
Echo "ARR1 Nye elementer er: $ Resultat [@]"

Etter å ha samsvarer med regexen, viser utgangen elementet der "22" og "77" -elementene fjernes fra “ARR1”.

Eksempel 4: Fjerning av hele matrisen i bashskriptet

De nevnte bashskriptene brukes til å fjerne de spesielle elementene fra matrisen. Vi kan også fjerne hele elementene i matrisen ved å spesifisere matrisvariabelen til UNSET -kommandoen. Her implementerer vi slettingsoperasjonen i bash -skriptet. Det første trinnet er erklæringen om matrisen som vi oppnådde med “Delcare -A” -kommandoen.

Vi definerer variabelen for matrisen som "Strarray". Deretter legger vi til strengelementene i matrisen. Etter det kaller vi UNSET -kommandoen som tar "Strarray" array -navnet uten indeksverdi. Denne tilnærmingen brukes til å slette hele matrisen i bashskriptet. Til slutt bruker vi de to ekkokommandoene for å vise matrisen og nøklene til matrisen.

#!/bin/bash
erklære -A Strarray = ("One" "Two" "Three" "Four" "Five"))
Unset Strarray
ekko $ !Strarray [@]
ekko $ !Strarray [@]

Vi prøver å skrive ut det nevnte skriptets elementer og nøkler, som ikke gir noen utdata. Siden matrisen ikke lenger eksisterer, returneres et tomt resultat.

Eksempel 5: Fjerning av et spesifikt matriseelement i bashskriptet med en annen tilnærming

De forrige eksemplene bruker UNSET -kommandoen for å slette et helt eller spesifikt element fra en gitt matrise. Der har vi en annen teknikk for å slette det aktuelle elementet i matrisen uten å bruke UNSET -kommandoen. Følgende bash -skript er definert med matrisen som har de fem første tegnene. Den matrisen lagres i en "CharArray" -variabel.

Deretter kalles "CharArray" -variabelen igjen og er spesifisert med "$ CharArray [@]: 1" -uttrykk. Uttrykket fjerner elementet i matrisen som er til stede ved første forekomst i matrisen da indeksverdien til “1” er gitt til “CharArray [@]”. Etter å ha eliminert det spesifiserte elementet fra matrisen, genererer Echo -kommandoen matrisen som inneholder alle elementene bortsett fra det fjerne elementet.

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

Karakterelementet til “A” vises ikke i følgende utgangsarray fordi det blir slettet via “$ CharArray [@]: 1” -uttrykk.

Konklusjon

Artikkelen om å slette et spesifikt element fra en matrise i et bash -skript blir forklart konseptuelt. Her brukte vi UNSET -kommandoen for å fjerne hele matrisen og det aktuelle elementet fra matrisen. UNSET -kommandoen fjerner også elementet fra matrisen gjennom den relative indeksetilnærmingen. Kampen Regex er også gitt for å slette elementet fra matrisen. I tillegg inkluderte vi kampen Regex for å fjerne et bestemt element fra en matrise.