Comando mapfile bash linux

Comando mapfile bash linux
O comando Bash Shell MapFile é frequentemente conhecido como uma matriz de leitura. O objetivo principal é ler linhas de entrada padrão e armazená -las em uma variável de matriz indexada. MapFile também deve ler a partir de substituição (<<) 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.

O comando Touch é usado para criar, alterar e editar registros de data e hora nos arquivos no sistema operacional UNIX/Linux. Então, como mostrado na imagem, tentamos a instrução "Touch" em nosso shell para criar um novo arquivo de texto. GNU Nano é um editor básico de linha de comando embutido para sistemas operacionais UNIX/Linux. Digite “Nano” após o símbolo $, seguido pelo nome do arquivo para abrir ou criar um novo arquivo.

$ touch novo.TXT
$ nano novo.TXT

Exemplo 1: Leia do arquivo como matriz

O comando "nano" no shell abre o "novo.Arquivo TXT "no editor" Nano ". Digitamos o texto um, dois e três no arquivo de texto em três linhas separadas, como mostrado. Salve este arquivo de dados de texto simples através do Ctrl+S e feche o editor "Nano" através do atalho Ctrl+X.

É hora de usar a instrução MapFile para ler os dados de texto recém -adicionados em um formulário de matriz. As linhas de texto no novo.O arquivo txt é armazenado como os elementos da matriz na variável "var" usando o comando mapfile. Na segunda linha, a consulta de eco é usada para imprimir todos os dados em cada índice de uma matriz armazenada na variável "var" em um formato de matriz. Da mesma forma, as próximas linhas dos códigos de declaração "eco" são usadas para exibir dados em um índice específico, i.e., 0,1,2,3 de uma matriz separadamente. Como a matriz contém apenas 3 valores, assim o resultado do índice 3 retorna nada.

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

Exemplo 2: Leia os dados de saída em uma matriz

Também podemos usar alguns dados de declaração de saída de uma instrução Bash para a matriz usando a instrução MAPFILE. Estamos usando a instrução PRIMF para colocar seus dados de saída em uma matriz “ARR."Três valores," Ana "," Paul "e" George ", separados por quebra de linha, caráter especial" \ n "será armazenado nele usando a instrução MapFile. Depois disso, o primeiro comando de eco é usado para exibir todos os dados em uma matriz. Os dados que ocorrem em cada índice de uma matriz "ARR" são exibidos da mesma forma nas próximas linhas de código através da declaração "Echo" seguida pelos números de índice nos colchetes quadrados. Como não há dados no terceiro índice de uma matriz, nenhuma saída é exibida na tela. Vamos seguir em direção ao próximo exemplo.

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

Exemplo 03: Opção MapFile -N

O comando do arquivo de mapa possui opções internas para execução. O -n opção foi utilizado para especificar o número de valores do arquivo de dados para tomar como entrada para uma matriz. Todas as linhas devem ser copiadas em uma matriz quando o valor de n é zero. A primeira linha no exemplo abaixo usa o comando do arquivo de mapa com a opção -n definida como 2. Isso significa que ele lerá as duas primeiras linhas do arquivo em uma matriz chamada "var" como valores de índice para uma matriz.

O comando echo exibe dados em todos os índices da matriz "var", i.e., 2 índices, implicando que o comando do arquivo de mapa copia as duas primeiras linhas do arquivo com a opção -n. Usando a opção "-n" com o valor 1 na instrução MapFile, apenas lerá uma única linha do arquivo, como mostrado abaixo.

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

Exemplo 04: Opção MapFile -t

A opção "-t" é usada para retirar/remover as linhas de novo de um item, armazenando-o em uma matriz. O exemplo abaixo mostra a execução prática do comando -t. O operador de substituição (<) 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 [@]”

Os exemplos abaixo mostram como imprimir os itens individuais de uma matriz usando índices.

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

No exemplo abaixo, o comando echo imprime todos os elementos da variável de matriz MapFile, separados por um espaço.

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

Podemos consertá -lo e remover as quebras de linha usando a opção -t de instrução MAPFILE.

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

Conclusão

Este artigo foi sobre a utilização da instrução Bash MapFile no Ubuntu 20.04 Sistema para pegar quaisquer dados de texto de entrada de uma matriz dentro de alguma variável e exibi -los de acordo com isso. Tentamos a instrução MapFile com opções “-n” e “-t” para obter um formato diferente de saídas para matrizes no Bash Shell.