Ler linha de um arquivo texto separar em variaveis em uma array [RESOLVIDO]

1. Ler linha de um arquivo texto separar em variaveis em uma array [RESOLVIDO]

Marcelo De Zan
mdezan

(usa Debian)

Enviado em 20/06/2022 - 15:38h

Senhores boa tarde,
Peço desculpas pois não estou mais mexendo com sistemas e scripts a um bom tempo e no momento me surgiu a necessidade de tratar alguns dados, livros na mão do Julino neves e da orreilly, paginas já estão até amareladas, pesquisas mas mesmo assim não dei meu passo inicial do jeito que eu queria....algo limpo

Eu quero ler um arquivo.txt, várias linhas com numeros dentro separados por hifens.
00-01-02-03-04-05-06-07-08-09-10 linha1
09-10-08-07-06-05-04-03-02-01-00 linha2 ... assim consecutivamente.


eu gostaria de ler o arquivo e cada numero esta contido dentro de um array/vetor de 10 posiçoes, pois depois terei que realizar tratamento deste array, seria algo mais ou menos assim:

#!/bin/bash
while IFS=- read -r Array[10]
do

echo ${arr[1]}
echo "${arr[@]}"
echo "${arr[10]}"

sleep 3
done < "numeros.txt"


eu consigo fazendo assim:
#!/bin/bash
while IFS=- read -r num1 num2 num3 ....
do

echo $num1
echo "$num2
echo "$num3

sleep 3
done < "numeros.txt"

Mas desta maneira estou achando que ficará porco, e também terei dificuldade para tratar os dados posteriormente. pois preciso trabalhar com conjunto de numeros para por exemplo depois colocar em um laço for etc...
Agradeço a ajuda,
obs.: credo como é ruim ficar sem mexer com sistemas e scripts depois pensar, será facil fazer eu faço... kkk


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/06/2022 - 17:49h

Segue sugestão:
while read -r line;do 
IFS="-" read -a matriz <<< "$line";
echo ${matriz[@]};
sleep 3;
done<numeros.txt



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


3. Melhorei um pouco conforme segue:

Marcelo De Zan
mdezan

(usa Debian)

Enviado em 20/06/2022 - 16:27h


#!/bin/bash


while IFS=- read -r line; do

ARRAY[1]=$(echo $line| cut -d - -f1);
ARRAY[2]=$(echo $line| cut -d - -f2);
ARRAY[3]=$(echo $line| cut -d - -f3);
ARRAY[4]=$(echo $line| cut -d - -f4);
ARRAY[5]=$(echo $line| cut -d - -f5);
ARRAY[6]=$(echo $line| cut -d - -f6);
ARRAY[7]=$(echo $line| cut -d - -f7);
ARRAY[8]=$(echo $line| cut -d - -f8);
ARRAY[9]=$(echo $line| cut -d - -f9);
ARRAY[10]=$(echo $line| cut -d - -f10);

echo "${ARRAY[@]}"
sleep 3
done < numeros.txt

desta maneira já dá para trabalhar, mas ainda aceito sugestões.. grato.


4. LINDA!!!!! golaço

Marcelo De Zan
mdezan

(usa Debian)

Enviado em 22/06/2022 - 10:25h

Parceiro, palmas para ti, linda solução....
agradecido, eu segui para frente do jeito feio que postei acima, mas quando empacar em algum novo problema irei alterar para sua sugestão dada que já testei e está redondinha!

abraços!



5. Re: Ler linha de um arquivo texto separar em variaveis em uma array [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/06/2022 - 13:59h


mdezan escreveu:

Parceiro, palmas para ti, linda solução....
agradecido, eu segui para frente do jeito feio que postei acima, mas quando empacar em algum novo problema irei alterar para sua sugestão dada que já testei e está redondinha!

abraços!

Agradeço pela melhor resposta.
É possível fazer com o awk,
Qual o tratamento que deseja fazer nos campos?


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



6. debatendo

Marcelo De Zan
mdezan

(usa Debian)

Enviado em 15/07/2022 - 08:29h


Fala chará,

Sim mas o awk acaba deixando o processamento mais demorado, passando parametro e startando processo do awk. creio que para meu proposito esta é a solução mais limpa mesmo, você matou a pau mesmo parceiro.
Anda mastigando bits no café da manhã! kkkkk
Grande abraço!


7. Re: Ler linha de um arquivo texto separar em variaveis em uma array [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 15/07/2022 - 14:27h

mdezan escreveu:


Fala chará,

Sim mas o awk acaba deixando o processamento mais demorado, passando parametro e startando processo do awk. creio que para meu proposito esta é a solução mais limpa mesmo, você matou a pau mesmo parceiro.
Anda mastigando bits no café da manhã! kkkkk
Grande abraço!

----------------------------------------------------------------------------------------------------------------
O awk "pega" os parâmetros do arquivo, linha a linha, campo a campo, sem a necessidade de laço...
Veja o exemplo abaixo,
O arquivo em questão tem 5897 linhas, com os resultados da quina,
o "comando awk", informa quantas vezes cada número foi sorteado.
wc -l < dez_quina.csv
5897

5897*5=29485 campos
awk -F":" '{dez[$1]++;dez[$2]++;dez[$3]++;dez[$4]++;dez[$5]++;}END{for(x in dez) print x":"dez[x]}' dez_quina.csv|sort; 

É gerado uma matriz para cada campo, e, conta quantas ocorrências para cada matriz.....
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts