shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RES: [shell-script] Manipulação de arquivos


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Manipulação de arquivos
Date: Tue, 30 Aug 2005 13:01:18 -0300

Leandro,
como vc está dizendo que a cadeia ocorre em posições fixas do xxx.txt,
imagino que este arquivo tenha registros de tamanho constante. Para efeito
de exemplo vamos supor que seu tamannho seja 100. Então podemos fazer:

sed 's/^/.{10}/;s/$/.{76}/' cnpj.txt > /tmp/$$
egrep -f /tmp/$$ xxx.txt > yyy.txt

Desta forma, em /tmp/$$ eu gerei registros da forma:

.{10}12345678901234.{76}

O que seria uma expressão regular para qq coisa 10 vezes seguido da cadeia
12345678901234 que seriam os 14 caracteres que vc deseja pesquizar entre aas
posições 11 e 24, seguidos de 76 qq coisa. Em seguida fiz cmd egrep que com
a opção -f, recebe o arquivo como sendo um arqivo de expressões regulares.

Para fazer isso num one-liner, e par oneliner o shell é campeão, poderíamos
fazer:

egrep -f <(sed 's/^/.{10}/;s/$/.{76}/' cnpj.txt) xxx.txt > yyy.txt

[ ]s,
Julio
:wq

| -----Mensagem original-----
| De: Leandro Valiengo [mailto:address@hidden]
| Enviada em: terça-feira, 30 de agosto de 2005 11:51
| Para: address@hidden
| Assunto: Re: [shell-script] Manipulação de arquivos
| 
| 
| Fala Thiago, 
|  
| mas quem me garante que nao terei esse numero repetido na 
| linha? Eu querial algo por posicao, tem como fazer?
| 
| Tiago Barcellos Peczenyj <address@hidden> escreveu:
| Eis nossos cnpjs =)
| 
| > cat cnpj.txt
| 12345678901234
| 01234567890123
| 21234567890123
| 53234567890123
| 
| Eis nosso arquivo
| 
| >cat xxx.txt
| __________12345678901234____
| __________01234567890123____
| __________88888888880000____
| 
| para procurar todos os cnpjs em xxx.txt
| 
| >grep -f cnpj.txt xxx.txt | tee -a yyy.txt
| __________12345678901234____
| __________01234567890123____
| 
| e os que não se encontram
| 
| >grep -v -f cnpj.txt xxx.txt | tee -a nao.txt
| __________88888888880000____
| 
| 
| basicamente vc procura strings com o grep. como vc tem uma lista eh so
| usar o 'grep -f file'. para vc procurar os que nao estao na lista,
| basta fazer grep -v que 'inverte' a procura.
| 
| O que é problema para o bash ?
| 
| Em 30/08/05, Leandro Valiengo escreveu:
| > 
| > Fala grupo, 
| > 
| > estou precisando da ajuda de vc´s. Eu tenho um arquvio cnpj.txt com
| > aproximadamente 5.000 cnpj´s e outro arquivo xxx.txt com 
| aproximadamente
| > 1.000.000 de registros sendo que o cnpj neste arquivo 
| comeca na posicao 11
| > até a 24.
| > 
| > Tenho q gerar um arquivo yyy.txt a partir do arquivo 
| xxx.txt somente com os
| > registros que se encontram no arquivo cnpj.txt e um outro 
| arquivo nao.txt
| > onde serão os cnpj´s q nao se encontram no arquivo cpnj.txt
| > 
| > Valeu.
| > 
| > Valiengo
| > 
| > 
| > 
| > ---------------------------------
| > Yahoo! Acesso Grátis: Internet rápida e grátis. Instale o 
| discador agora!
| > 
| > [As partes desta mensagem que não continham texto foram removidas]
| > 
| > 
| > 
| > 
| ---------------------------------------------------------------------
| > Esta lista não admite a abordagem de outras liguagens de 
| programação, como
| > perl, C etc. Quem insistir em não seguir esta regra será 
| moderado sem prévio
| > aviso.
| > 
| ---------------------------------------------------------------------
| > Sair da lista: address@hidden
| > 
| ---------------------------------------------------------------------
| > Esta lista é moderada de acordo com o previsto em
| > http://www.listas-discussao.cjb.net
| > 
| ---------------------------------------------------------------------
| > 
| > 
| > 
| > 
| > Yahoo! Grupos, um serviço oferecido por: 
| > 
| > PUBLICIDADE
| > 
| > ________________________________
| > Links do Yahoo! Grupos
| > 
| > 
| > Para visitar o site do seu grupo na web, acesse:
| > http://br.groups.yahoo.com/group/shell-script/
| > 
| > Para sair deste grupo, envie um e-mail para:
| > address@hidden
| > 
| > O uso que você faz do Yahoo! Grupos está sujeito aos Termos 
| do Serviço do
| > Yahoo!.
| 
| 
| ---------------------------------------------------------------------
| Esta lista não admite a abordagem de outras liguagens de 
| programação, como perl, C etc. Quem insistir em não seguir 
| esta regra será moderado sem prévio aviso.
| ---------------------------------------------------------------------
| Sair da lista: address@hidden
| ---------------------------------------------------------------------
| Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos









__________________________________________________
Converse com seus amigos em tempo real com o Yahoo! Messenger 
http://br.download.yahoo.com/messenger/ 

[As partes desta mensagem que não continham texto foram removidas]



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
 
Links do Yahoo! Grupos




 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]