MapFile Bash Linux -kommando

MapFile Bash Linux -kommando
Bash Shell Mapfile -kommandoen er ofte kjent som en leserutvalg. Hovedformålet er å lese standardinngangslinjer og lagre dem i en indeksert array -variabel. MapFile må også lese fra erstatning (<<) rather than a pipe. In addition, as compared to a read loop, bash Mapfile is a much faster and more convenient solution. It returns 1 if the execution of the command gets successful and 0 in case it is not successful. If we don't specify an array name, the bash Mapfile variable will be targeting the array variable by default. Thus, we have decided to cover some examples using the mapfile instruction on the bash.

Touch -kommandoen brukes til å opprette, endre og redigere tidsstempler på filer i UNIX/Linux -operativsystemet. Så som vist på bildet, har vi prøvd "berørings" -instruksjonen i skallet vårt for å lage en ny tekstfil. GNU Nano er en grunnleggende innebygd kommandolinje-redaktør for UNIX/Linux-operativsystemer. Skriv "Nano" etter $ -symbolet, etterfulgt av filens navn for å åpne eller opprette en ny fil.

$ berør nytt.tekst
$ nano ny.tekst

Eksempel 1: Les fra filen som matrise

“Nano” -kommandoen i skallet åpner “NYTT.txt ”-filen i“ Nano ”-redigereren. Vi har skrevet teksten en, to og tre i tekstfilen i tre separate linjer som vist. Lagre denne enkle tekstdatafilen via Ctrl+S og lukk “Nano” -redigereren via Ctrl+X -snarveien.

Det er på tide å bruke MapFile -instruksjonen for å lese de nettopp lagt til tekstdataene i et array -skjema. Tekstlinjene i det nye.TXT -filen lagres som matriseelementene i variabelen “VAR” ved hjelp av MapFile -kommandoen. I den andre linjen brukes Echo -spørringen til å skrive ut alle dataene på hver indeks for en matrise som er lagret i variabelen “VAR” i et matriseformat. Tilsvarende brukes de neste linjene med "ekko" -erklæringskoder for å vise data i en spesifikk indeks, i.e., 0,1,2,3 av en matrise hver for seg. Ettersom matrisen bare inneholder 3 verdier, returnerer resultatet av indeks 3 ingenting.

$ mapfile var < new.txt
$ ekko $ var [@]
$ ekko $ var [0]
$ ekko $ var [1]
$ ekko $ var [2]
$ ekko $ var [3]

Eksempel 2: Les outputdata i en matrise

Vi kan også benytte oss av noen utdata -data fra en bash -instruksjon til matrisen ved hjelp av MapFile -instruksjonen. Vi har brukt Printf -setningen for å få utdataene sine til en matrise “ARR.”Tre verdier,“ Ana, ”“ Paul, ”og“ George ”, atskilt av Line Break Spesielt karakter“ \ n ”vil bli lagret i den ved hjelp av MapFile -instruksjonen. Etter det brukes den første Echo -kommandoen til å vise alle dataene i en matrise. Dataene som oppstår på hver indeks for en matrise "ARR" vises på samme måte i de neste kodelinjene via "Echo" -uttalelsen etterfulgt av indeksnumrene i de firkantede parentesene. Fordi det ikke er noen data om den tredje indeksen for en matrise, vises ingen utgang på skjermen. La oss gå mot neste eksempel.

$ mapfile arr < <(printf “Ana \nPaul \n George\n”)
$ ekko $ var [@]
$ ekko $ var [0]
$ ekko $ var [1]
$ ekko $ var [2]
$ ekko $ var [3]
$ ekko $ var [0]

Eksempel 03: MapFile -N -alternativet

Kartfil-kommandoen har innebygde alternativer for utførelse. De -n Alternativ har blitt brukt til å spesifisere antall verdier fra datafilen som skal ta som en inndata for en matrise. Alle linjene skal kopieres til en matrise når verdien av n er null. Den første linjen i eksemplet nedenfor bruker kartfil -kommandoen med -n -alternativet satt til 2. Dette betyr at den vil lese de to første linjene fra filen til en matrise kalt "VAR" som indeksverdier for en matrise.

Echo -kommandoen viser data om alle indekser i matrisen "var," i.e., 2 indekser, noe. Å bruke alternativet “-n” med verdi 1 i MapFile-instruksjonen vil bare lese en enkelt linje fra filen, som vist nedenfor.

$ mapfile -n var < new.txt
$ ekko $ var [@]
$ mapfile -n 1 var < new.txt
$ ekko $ var [@]

Eksempel 04: mapfile -t alternativ

Alternativet “-T” brukes til å strippe/fjerne newlines fra et element ved å lagre det i en matrise. Eksemplet nedenfor viser den praktiske utførelsen av kommando -t. Substitusjonsoperatøren (<) is used to populate the data into an array named “Arr.” The Mapfile instruction receives standard input strings, i.e., “Ana,” “Paul,” and “George,” from the printf statement and appends newlines (-t) to each line. When we run the entire command, mapfile silently scans the text lines and places each line into its specific array variable. The use of the printf statement is simply showing us that the string elements have been considered as array elements while “\n” has been used to give the line break in the shell.

$ mapfile -t arr< <(printf “Ana \nPaul \nGeorge\n”)
$ printf “%s \ n” “$ arr [@]”

Eksemplene nedenfor viser hvordan du skriver ut de enkelte elementene i en matrise ved hjelp av indekser.

$ printf “%s \ n” “$ arr [0]”
$ printf “%s \ n” “$ arr [1]”
$ printf “%s \ n” “$ arr [2]”
$ printf “%s \ n” “$ arr [3]”

I eksemplet nedenfor skriver Echo -kommandoen ut alle elementene i matrisevariabelen MapFile, atskilt med et rom.

$ printf “ana \ npaul \ ngeorge \ n” | (mapFile; ekko “$ mapFile [@]”)

Vi kan fikse det og fjerne linjeskiftet ved å bruke -t -alternativet med MapFile -instruksjon.

$ printf “ana \ npaul \ ngeorge \ n” | (mapfile -t; ekko “$ mapFile [@]”)

Konklusjon

Denne artikkelen handlet om bruk av bash mapfile -instruksjon på Ubuntu 20.04 System for å ta inn inngangstekstdata fra en matrise innenfor en eller annen variabel og vise dem i henhold til det. Vi har prøvd MapFile-instruksjonen med “-N” og “-T” -alternativer for å få et annet format av utganger for matriser på Bash Shell.