Como separar cada parte de uma linha e guardar em variaveis diferentes? [RESOLVIDO]

1. Como separar cada parte de uma linha e guardar em variaveis diferentes? [RESOLVIDO]

Danny Shaw
InicianteShell

(usa Outra)

Enviado em 26/03/2016 - 22:38h

Fala galera !


Minha duvida e a seguinte:

Tenho um arquivo com 30 linhas e cada linha tem um formato assim: 1234567891324658946165131654894 .
Eu quero ler cada linha e separar os 5 primeiros numeros (que sao a identificacao do usuario) e guardar em uma variavel , os 6 numeros seguintes guardar em outra variavel e assim por diante ate terminar a linha, isso pra cada linha, ao fim de cada linha envio essas variaveis para o BD. Alguem pode me ajudar?




  


2. Re: Como separar cada parte de uma linha e guardar em variaveis diferentes?

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/03/2016 - 22:55h

Isso dá prá fazer com o comando SED, mas antes de continuar ou alguém mais responder, falta um esclarecimento:

* separar 5 primeiros caracteres
* depois separar 6 caracteres

A dúvida é: o que fazer com o restante da linha? Porque eu entendi que há mais números na linha do modo que foi explicado.
Poderia ter 50, 500, 5000 linhas que a lógica seria a mesma. Falta definir qual é o tamanho de uma linha inteira. 5, 6, 5, 6, 5, 6 ...

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



3. Re: Como separar cada parte de uma linha e guardar em variaveis diferentes? [RESOLVIDO]

Danny Shaw
InicianteShell

(usa Outra)

Enviado em 26/03/2016 - 23:29h

Valeu pela resposta !

Beleza a separacao e assim : 11 primeiros numeros a id
8 seguintes sao a data
4 seguintes sao a primeira hora
4 seguintes sao a segunda hora
4 seguintes sao a terceira hora
4 seguintes sao a terceira hora

Dando 35 numeros por linha .



Valeu!



4. Re: Como separar cada parte de uma linha e guardar em variaveis diferentes? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/03/2016 - 01:17h

Como o SED é chatinho vou passar umas dicas. O comando abaixo resume o que se deve fazer:

echo '12345678901234567890123456789012345' | sed -r 's/^[0-9]{5}([0-9]{6})[0-9]*$/\1/g 


Atenção para o 5 e o 6 destacados na linha depois do sed.

{5} indica que ele deve ler os cinco primeiros caracteres.
{6} indica ler os posteriores seis caracteres em relação aos 5.
E aí você troca os números para ler as posições de linha que você deseja.

Para ler o arquivo você usa

while read i; do

variavel_1=$(echo "$i" | sed ...)
variavel_2=$(echo "$i" | sed ...)
variavel_3=$(echo "$i" | sed ...)
variavel_4=$(echo "$i" | sed ...)
variavel_5=$(echo "$i" | sed ...)

(...)

done < arquivo_de_entrada.txt


A cada passada do loop while o programa lê uma linha do arquivo e joga a linha inteira na variável i.
Depois joga-se a linha contra o sed conforme falado lá em cima.
Os números no sed devem mudar conforme a posição das variáveis na linha.

E cada variavel_X conterá um dado de um campo da linha toda grudada, só que agora separada.

Tem um jeito de se fazer usando o formato ${} do BASH.

Vou deixar como está. Está bom para ser completado. Assim nem eu entrego tudo e nem você fica sem estudar para fazer funcionar.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



5. Re: Como separar cada parte de uma linha e guardar em variaveis diferentes? [RESOLVIDO]

Danny Shaw
InicianteShell

(usa Outra)

Enviado em 27/03/2016 - 02:06h

Muito obrigado!!!!! Top a resposta!!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts