Manipular arquivos de texto [RESOLVIDO]

1. Manipular arquivos de texto [RESOLVIDO]

Ede Willians
edwillians

(usa Debian)

Enviado em 24/02/2016 - 17:23h

Tenho muitos arquivos de texto (csv) com mais de 100000 linhas ao qual preciso remover algumas linhas e manter as que tenham 16 digitos entre os dois ; (ponto e virgula). Mas nos casos que este campo (coluna) tenha mais de 16 digitos ou menos que então toda linha seja removida.
De:
DAsYivKx1irPQFwPzxg60Q==;4914119047719125;xLHbcHb5DRRw;;
jcw1wCIRPjxLHbcHb5DRRw==;45518110960822;xLHbcHb5Rw;
jcw1wCIRPjxLHbcHb5DRRw==;45518110960827;544sa56d4as5d;
g4aA5NHrHAO/NAf0KRa7Qw==;5274681653301221;sadasd;
ft6kUmCk1lgPmQVm2ivX6Q==;5493680007745;aksjdaskjnbdajknd445;
zvvbBit+TsVy/EnBgNEf0A==;546451979552270;sad3wqr54y546y54tgfdg;
9b9ZPDdsDtGfgu1DqcoyQg==;5067262402517222;qr3q54tgdfgnbvbmbvkm;
/OHBSeJx2/XlvQIDY0lwoQ==;5267782483057040;2345ygdfsdfds;

Para:
4914119047719125
5067262402517222
5267782483057040


ou seja, que me traga somente os números que estão entre ; (ponto e virgula) desde que tenham 16 digitos , nem mais nem menos.

Eu não tenho conhecimento sobre expressões regulares, então gostaria que alguem pudesse me ajudar.

Muito obrigado!


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/02/2016 - 13:56h

edwillians escreveu:

Tenho muitos arquivos de texto (csv) com mais de 100000 linhas ao qual preciso remover algumas linhas e manter as que tenham 16 digitos entre os dois ; (ponto e virgula). Mas nos casos que este campo (coluna) tenha mais de 16 digitos ou menos que então toda linha seja removida.
Ou seja, que me traga somente os números que estão entre ; (ponto e virgula) desde que tenham 16 digitos , nem mais nem menos.
Eu não tenho conhecimento sobre expressões regulares, então gostaria que alguem pudesse me ajudar.
Muito obrigado!

--------------------------------------------------------
Boa tarde edwillians!
Se entendi "certo", você deseja o CAMPO 02, desde que contenha EXATOS 16 DÍGITOS.
Segue:
awk -F";" '{if (length($2) == 16) {print $2}'} SEU_ARQUIVO.txt 

Saída:

4914119047719125
5274681653301221
5067262402517222
5267782483057040



Att.:
Marcelo Oliver

PS.: Se resolver, marque como resolvido, gostando da solução, marque como melhor resposta . . . :)



3. Re: Manipular arquivos de texto

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/02/2016 - 17:25h

Eu estava escrevendo a resposta e o tópico sumiu.

cat arquivo | sed '/^.\{,42\}/d'

Apaga linhas com 42 caracteres ou menos.

cat arquivo | sed '/^.\{44,\}/d'

Apaga linhas com 44 caracteres ou mais.

Na teoria pode funcionar. Não testei.

Deixo para você unificar os códigos.

----------------------------------------------------------------------------------------------------------------
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



4. Re: Manipular arquivos de texto [RESOLVIDO]

Ede Willians
edwillians

(usa Debian)

Enviado em 24/02/2016 - 17:47h

listeiro_037 escreveu:

Eu estava escrevendo a resposta e o tópico sumiu.

cat arquivo | sed '/^.\{,42\}/d'

Apaga linhas com 42 caracteres ou menos.

cat arquivo | sed '/^.\{44,\}/d'

Apaga linhas com 44 caracteres ou mais.

Na teoria pode funcionar. Não testei.

Deixo para você unificar os códigos.

----------------------------------------------------------------------------------------------------------------
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




Listeiro, infelizmente não deu o resultado esperado

Eu esperava que trouxesse:

De:
DAsYivKx1irPQFwPzxg60Q==;4914119047719125;xLHbcHb5DRRw;;
jcw1wCIRPjxLHbcHb5DRRw==;45518110960822;xLHbcHb5Rw;
jcw1wCIRPjxLHbcHb5DRRw==;45518110960827;544sa56d4as5d;
g4aA5NHrHAO/NAf0KRa7Qw==;5274681653301221;sadasd;
ft6kUmCk1lgPmQVm2ivX6Q==;5493680007745;aksjdaskjnbdajknd445;
zvvbBit+TsVy/EnBgNEf0A==;546451979552270;sad3wqr54y546y54tgfdg;
9b9ZPDdsDtGfgu1DqcoyQg==;5067262402517222;qr3q54tgdfgnbvbmbvkm;
/OHBSeJx2/XlvQIDY0lwoQ==;5267782483057040;2345ygdfsdfds;

Para:
4914119047719125
5067262402517222
5267782483057040


ou seja, que me traga somente os números que estão entre ; (ponto e virgula) desde que tenham 16 digitos , nem mais nem menos.


5. Re: Manipular arquivos de texto [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/02/2016 - 17:49h

Não entendi muito bem o que você queria.
Se ninguém encontrar alguma resposta eu tentarei algo daqui a pouco.

----------------------------------------------------------------------------------------------------------------
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



6. Re: Manipular arquivos de texto [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 25/02/2016 - 15:33h

Olá,

Se é expressões que quer, ai vai:
sed -rn 's/.*;(.{16});.*/\1/pg' arquivo 


abs,


Uma vida sem desafios não vale a pena ser vivida.
Sócrates

---


7. Re: Manipular arquivos de texto [RESOLVIDO]

Ede Willians
edwillians

(usa Debian)

Enviado em 25/02/2016 - 17:28h

tonyhts e msoliver


Muito obrigado os dois me ajudaram, cada um no seu interpretador ... Muito obrigado mesmo!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts