Entrar
Usuário novo? Cadastre-se
shell-script · Lista brasileira sobre Linux Shell Script
? Você já é um associado? Entre no Yahoo!

Dicas

Você sabia...
Você pode fazer buscas no grupo por mensagens antigas.

Mensagens

  Ajuda
Avançado
Ajuda Rastreamento Correios   Lista de tópicos   < Tópico anterior  |  Próximo tópico >
Resumir mensagens Classificar por data  
#29549 De: "Ernander (Nander)" <ernander@...>
Data: Seg, 6 de Jul de 2009 6:30 pm
Assunto: Ajuda Rastreamento Correios
ernander2004
Offline Offline
Enviar e-mail Enviar e-mail
 
Senhores boa Tarde!

preciso de uma Ajudinha básica:

To fazendo um Shell para rastrear algumas encomendas aki da empresa. Ela
deve buscar pela registro do Sedex, como na url a seguir:
http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001\
&P_COD_UNI=

*SO154731845BR*

tenho um Arquivo com os números das encomendas ( como a string em vermelho
). usndo o lynx, com este comando:
lynx -dump "
http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001\
&P_COD_UNI=SO154731845BR

"

obtenho a seguinte saída:


[correios.gif] SO154731845BR - Hist�rico do Objeto
O hor�rio n�o indica quando a situa��o ocorreu, mas sim quando os
dados
foram recebidos pelo sistema, exceto no caso do SEDEX 10 e do SEDEX
Hoje, em que ele representa o hor�rio real da entrega.

Data Local Situa��o
03/06/2009 14:35 CEE GOVERNADOR VALADARES - GOVERNADOR VALADARES/MG
Entregue
02/06/2009 12:13 CEE GOVERNADOR VALADARES - GOVERNADOR VALADARES/MG
Entregue
02/06/2009 07:02 CEE GOVERNADOR VALADARES - GOVERNADOR VALADARES/MG
Aguardando retirada
Endere�o: AVENIDA PASCOAL DE SOUZA LIMA,155 - VILA BRETAS
01/06/2009 22:06 CTE BH - BELO HORIZONTE/MG Encaminhado
Encaminhado para CEE GOVERNADOR VALADARES - GOVERNADOR VALADARES/MG
01/06/2009 18:42 ACF TAMOIOS - BELO HORIZONTE /MG Postado
01/06/2009 17:18 ACF TAMOIOS - BELO HORIZONTE /MG Encaminhado
Em tr�nsito para UNIDADE DE CORREIOS/XX
__________________________________________________________________

[1]Conta SEDEX - saiba como contratar o SEDEX para sua empresa.

[2]Endere�ador - conhe�a o software gratuito dos Correios para
gera��o
de etiquetas. [BUTTON] [BUTTON]

Referências

1.
http://www.correios.com.br/encomendas/servicos/sedex/contaSedex/default.cfm
2. http://www.correios.com.br/enderecador/default.cfm


o que eu quero é basicamente a linha em vermelho acima que deveria vir
assim:

#DATA #HORA #AGENCIA
#CIDADE/ESTADO #STATUS
03/06/2009 14:35 CEE GOVERNADOR VALADARES - GOVERNADOR VALADARES/MG
Entregue

Mas o que me me interessa mesmo é somente a data/hora e o Status. Porém
tenho vários status e de vez em qdo ( pelo fato de ser muito acessado) o
site da "Server Unavaiable" mas é questão de minutos se eu refizer a
consulta ele retorna os dados.


como eu elimino o Lixo antes, filtro somente a linha que eu quero ( sem
quebrar de linha o Status) para eu poder continar as averiguações?


Att

--
â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
â•‘ Ernander Lataliza â•‘
╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
--------------------------------------
SEJA LIVRE! USE LINUX!
Linux User #394812
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.6 (GNU/Linux)

mQGiBEnrmpwRBADsGwMo8R2spUxfer19bGyX5mAXRyEhm5vlzkOH9T7Fe4WyAvLM
rDpSKjv1VgcC3/fSMpPQ8MmQZwwO4H87IIwyN0AX/NqvmEQDNMVZS6omrcN39jpt
xEC80Hs/TP/yKyB2V6seHV0eZtjlfmokIb7nYazcxTLAhiv9CVg9nL+JCwCg+gNL
R+1rQcqGooGtjIL95OZr/8kEANpGy/Jb+B7Ajq4gatJ6qoedDyeyFFDRz8aV1OBJ
TCRh9T8MWjOhwvgcsGQV7R95VHgJNVGnej6yilMoM3NtIcyA2tbXAUerp5QhRAAi
2BU50z2JF5wl7YQ5ocSpOxp5Cq4sEBJYa/gTUzbLzztNc+ezCIKV403kEbE2IqSV
9rt3A/4vxcKsh9IX1At+vH9Ev850CXlRyxN4H7tRlGL+OdqQ76SR3tMi1qm4NRIp
p0Y7gJ8k9YdfWCgm56aLlSCCXlr80TXP5WHEH+sz2yDrw6iCj5ABeBMA5tdTae5y
bpx9QJgu5+1dYAK+FFWM+czPO11FM6nOKC3N+XSvrmM88dQhg7RHRXJuYW5kZXIg
TWFyY3VzIExhdGFsaXphIFJvc2VuZG8gKE5hbmRlciBMYXRhbGl6YSkgPGVybmFu
ZGVyQGdtYWlsLmNvbT6IYAQTEQIAIAUCSeuanAIbAwYLCQgHAwIEFQIIAwQWAgMB
Ah4BAheAAAoJEKahazXSKEoo15oAoPBiOWjUw0I2a6u7MtDPPwNPebG3AKDsoBuT
tcC4MzB17iNsOq819aV42rkBDQRJ65qdEAQApuFxoXRdeQrFIOJDyxE2EQi3GZby
2RP0+6iWiLbMk3XUGVsc477NTeGkEuDQA0SpkA5whL4wHWHCrYaE9rtmYMYW67ml
z/PUPWGI78cQ/R7M1ADPLGaD7cSxfdWzIHbhkP29x4zHTkSrdl4zT+XOHXwmAULp
ekzuKdb6whw676MAAwUD/isUOzlyF5sf/Q7RJRmLjOEEn5gpL/pf7ZzWHNxgxsPH
s1LlicO2yObH1cuVDXQDsc3a6ag61z1gCapa8Q1L/E5akKpU0irRzf99yNVzTp3i
BD9cua7h7fnfBMp6D4EyLDnUkCxOMD5HdIik1Ie6iHoVdCeDpYFnv72RplPI3dBB
iEkEGBECAAkFAknrmp0CGwwACgkQpqFrNdIoSiiUYgCgvHpf/Tkub4sWz/Vj91y6
BgH84hQAn3Z8pVMAUMJmmH/jRqJg49SS8AHc
=1sQ8
-----END PGP PUBLIC KEY BLOCK-----


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




#29557 De: "Cristiano Ferrari" <boxferrari@...>
Data: Seg, 6 de Jul de 2009 9:34 pm
Assunto: Re: Ajuda Rastreamento Correios
box_ferrari
Offline Offline
Enviar e-mail Enviar e-mail
 
--- Em shell-script@..., "Ernander (Nander)" <ernander@...>
escreveu
>
> Senhores boa Tarde!
>
> preciso de uma Ajudinha básica:
>
>
> o que eu quero é basicamente a linha em vermelho acima que deveria vir
> assim:
>
> #DATA #HORA #AGENCIA
> #CIDADE/ESTADO #STATUS
> 03/06/2009 14:35 CEE GOVERNADOR VALADARES - GOVERNADOR VALADARES/MG
> Entregue
>
> Mas o que me me interessa mesmo é somente a data/hora e o Status. Porém
> tenho vários status e de vez em qdo ( pelo fato de ser muito acessado) o
> site da "Server Unavaiable" mas é questão de minutos se eu refizer a
> consulta ele retorna os dados.
>
>
> como eu elimino o Lixo antes, filtro somente a linha que eu quero ( sem
> quebrar de linha o Status) para eu poder continar as averiguações?
>

Ernander, boa tarde.

Vamos por partes, como diria o Jack.

First of all, 2 conselhos:

1. Não use e-mail em formato HTML. Nem todos na lista recebem este formato (não
se surpreenda se alguem só ler os e-mails em um console tty). Eu mesmo, que opto
por não receber os e-mails mas acompanho a lista pelo RSS, não consigo ver o
código html na própria página do yahoo. Portanto, não tenho a menor idéia de
onde você destacou em vermelho.

2. Não cole muito conteúdo o corpo do e-mail. O texto que explica o seu problema
e o que realmente importa para alguém te ajudar se perde no meio do conteúdo que
você colou. Sem contar que o yahoo esculhamba as quebras de linhas. O que está
bonitinho na tela do seu mail client, chega aqui uma verdadeira bagunça. Tem
sites legais na internet onde você pode colar o seu conteúdo, inclusive com
destaque de sintaxe. O pastebin.com é um deles (dentre muitos).

Bom, agora vamos ao seu problema. Pelo que consegui entender, você quer ver só a
primeira linha (de cima para baixa, a mais atualizada) do status do objeto,
certo?

Se for assim, tem várias maneiras de fazer isso. Voce pode comerçar usando uma
ER (http://www.aurelio.net/er/) para identificar o que são linhas de status e o
que é "lixo".

Uma coisa comum a toda linha de status é que ela tem um timestamp, reprsentado
pela data+hora. Então esta ER pega tudo que tem um timestamp no formato usado
pelo site:

[0-3][0-9]\/[0-1][0-9]\/"20"[0-1][0-9]\ [0-2][0-9]\:[0-5][0-9]

Atenção para o espaço em branco escapado (\ ) separando a hora da data.

Bom, o status vem na linha seguinte, então você precisa da linha que tem o
timestamp, mais a linha seguinte. "grep -A 2" faz isso para você.

Mas você só quer a última atualização. O comando head pega só as primeiras e
head -n 2 diz para pegar só as 2 primeiras.

Agora é só juntar a linha que tem o timestamp, com a do status. Use o sed para
isso. O comando para juntar as linhas é o ':a;$!N;s/\n//g;ta' (Aurélio denovo:
http://aurelio.net/sed/sed-HOWTO/sed-HOWTO-7.html). Se quiser entender o porque
da sopa de letrinhas, isso foi comentado aqui dias atrás
(http://br.groups.yahoo.com/group/shell-script/message/29438).

Então, juntando tudo isso, dá uma olhada como fica:

http://pastebin.com/f2548cd8

É isso que você queria fazer? Ajudou?








#29558 De: "klayson sesana bonatto" <klaysonbonatto@...>
Data: Seg, 6 de Jul de 2009 11:15 pm
Assunto: Re: Ajuda Rastreamento Correios
klaysonbonatto
Offline Offline
Enviar e-mail Enviar e-mail
 
Cara, dá uma olhada no script do Leo Boiko:
http://namakajiri.net/complog/watch-encomenda-sh/

Pode te dar umas idéias legais sobre a resolução do problema.

Abraço.

klayson

--- Em shell-script@..., "Cristiano Ferrari" <boxferrari@...>
escreveu
>
> --- Em shell-script@..., "Ernander (Nander)" <ernander@>
escreveu
> >
> > Senhores boa Tarde!
> >
> > preciso de uma Ajudinha básica:
> >
> >
> > o que eu quero é basicamente a linha em vermelho acima que deveria vir
> > assim:
> >
> > #DATA #HORA #AGENCIA
> > #CIDADE/ESTADO #STATUS
> > 03/06/2009 14:35 CEE GOVERNADOR VALADARES - GOVERNADOR VALADARES/MG
> > Entregue
> >
> > Mas o que me me interessa mesmo é somente a data/hora e o Status. Porém
> > tenho vários status e de vez em qdo ( pelo fato de ser muito acessado) o
> > site da "Server Unavaiable" mas é questão de minutos se eu refizer a
> > consulta ele retorna os dados.
> >
> >
> > como eu elimino o Lixo antes, filtro somente a linha que eu quero ( sem
> > quebrar de linha o Status) para eu poder continar as averiguações?
> >
>
> Ernander, boa tarde.
>
> Vamos por partes, como diria o Jack.
>
> First of all, 2 conselhos:
>
> 1. Não use e-mail em formato HTML. Nem todos na lista recebem este formato
(não se surpreenda se alguem só ler os e-mails em um console tty). Eu mesmo, que
opto por não receber os e-mails mas acompanho a lista pelo RSS, não consigo ver
o código html na própria página do yahoo. Portanto, não tenho a menor idéia de
onde você destacou em vermelho.
>
> 2. Não cole muito conteúdo o corpo do e-mail. O texto que explica o seu
problema e o que realmente importa para alguém te ajudar se perde no meio do
conteúdo que você colou. Sem contar que o yahoo esculhamba as quebras de linhas.
O que está bonitinho na tela do seu mail client, chega aqui uma verdadeira
bagunça. Tem sites legais na internet onde você pode colar o seu conteúdo,
inclusive com destaque de sintaxe. O pastebin.com é um deles (dentre muitos).
>
> Bom, agora vamos ao seu problema. Pelo que consegui entender, você quer ver só
a primeira linha (de cima para baixa, a mais atualizada) do status do objeto,
certo?
>
> Se for assim, tem várias maneiras de fazer isso. Voce pode comerçar usando uma
ER (http://www.aurelio.net/er/) para identificar o que são linhas de status e o
que é "lixo".
>
> Uma coisa comum a toda linha de status é que ela tem um timestamp, reprsentado
pela data+hora. Então esta ER pega tudo que tem um timestamp no formato usado
pelo site:
>
> [0-3][0-9]\/[0-1][0-9]\/"20"[0-1][0-9]\ [0-2][0-9]\:[0-5][0-9]
>
> Atenção para o espaço em branco escapado (\ ) separando a hora da data.
>
> Bom, o status vem na linha seguinte, então você precisa da linha que tem o
timestamp, mais a linha seguinte. "grep -A 2" faz isso para você.
>
> Mas você só quer a última atualização. O comando head pega só as primeiras e
head -n 2 diz para pegar só as 2 primeiras.
>
> Agora é só juntar a linha que tem o timestamp, com a do status. Use o sed para
isso. O comando para juntar as linhas é o ':a;$!N;s/\n//g;ta' (Aurélio denovo:
http://aurelio.net/sed/sed-HOWTO/sed-HOWTO-7.html). Se quiser entender o porque
da sopa de letrinhas, isso foi comentado aqui dias atrás
(http://br.groups.yahoo.com/group/shell-script/message/29438).
>
> Então, juntando tudo isso, dá uma olhada como fica:
>
> http://pastebin.com/f2548cd8
>
> É isso que você queria fazer? Ajudou?
>





#29561 De: "Julio C. Neves" <julio.neves@...>
Data: Ter, 7 de Jul de 2009 1:53 pm
Assunto: Re: Re: Ajuda Rastreamento Correios
julioneves99
Offline Offline
Enviar e-mail Enviar e-mail
 
Traduzindo isso tudo para um one-liner e simplificando a ER, vem:

grep -A2 '[0-3][0-9]/[0-1][0-9]/20[0-1][0-9] [0-2][0-9]:[0-5][0-9]' arquivo
| tail -2 | tr -d '\n'

A simplificação deve-se ao fato de que, no grep, não há necessidade de
escapar tudo e pelo tr ser mais leve (e portanto mais rápido) que o sed.

Se vc quiser colocar aquele cabeçalho maluco, para continuar no one-liner,
faça:

echo #DATA #HORA #AGENCIA #CIDADE/ESTADO #STATUS | cat - <(xxx)

Onde xxx deve ser substituído pela linha do grep+tail+tr acima.

Não havia postado nada antes, pq tb não uso HTML e portanto não distingui a
sua linha vermelha (o Cristiano, que é Ferrari, que deveria usar esta cor
;). Usando HTML colorido vc verá a coisa preta! ;)
--
Abraços,
Julio
Cursos de Shell e Zenity?

- Em SP ligue (11) 2125-4747;

- Em DF ligue (61) 3223-3000;

- No RJ darei um treinamento em 23, 24 e 25/07 (p/ detalhes ligue (21)
2561-0867);
- Turmas fechadas em outras cidades ligue (21) 8112-9988


2009/7/6 Cristiano Ferrari <boxferrari@...>

>
>
> --- Em shell-script@... <shell-script%40yahoogrupos.com.br>,
> "Ernander (Nander)" <ernander@...> escreveu
> >
> > Senhores boa Tarde!
> >
> > preciso de uma Ajudinha básica:
> >
> >
> > o que eu quero é basicamente a linha em vermelho acima que deveria vir
> > assim:
> >
> > #DATA #HORA #AGENCIA
> > #CIDADE/ESTADO #STATUS
> > 03/06/2009 14:35 CEE GOVERNADOR VALADARES - GOVERNADOR VALADARES/MG
> > Entregue
> >
> > Mas o que me me interessa mesmo é somente a data/hora e o Status. Porém
> > tenho vários status e de vez em qdo ( pelo fato de ser muito acessado) o
> > site da "Server Unavaiable" mas é questão de minutos se eu refizer a
> > consulta ele retorna os dados.
> >
> >
> > como eu elimino o Lixo antes, filtro somente a linha que eu quero ( sem
> > quebrar de linha o Status) para eu poder continar as averiguações?
> >
>
> Ernander, boa tarde.
>
> Vamos por partes, como diria o Jack.
>
> First of all, 2 conselhos:
>
> 1. Não use e-mail em formato HTML. Nem todos na lista recebem este formato
> (não se surpreenda se alguem só ler os e-mails em um console tty). Eu mesmo,
> que opto por não receber os e-mails mas acompanho a lista pelo RSS, não
> consigo ver o código html na própria página do yahoo. Portanto, não tenho a
> menor idéia de onde você destacou em vermelho.
>
> 2. Não cole muito conteúdo o corpo do e-mail. O texto que explica o seu
> problema e o que realmente importa para alguém te ajudar se perde no meio do
> conteúdo que você colou. Sem contar que o yahoo esculhamba as quebras de
> linhas. O que está bonitinho na tela do seu mail client, chega aqui uma
> verdadeira bagunça. Tem sites legais na internet onde você pode colar o seu
> conteúdo, inclusive com destaque de sintaxe. O pastebin.com é um deles
> (dentre muitos).
>
> Bom, agora vamos ao seu problema. Pelo que consegui entender, você quer ver
> só a primeira linha (de cima para baixa, a mais atualizada) do status do
> objeto, certo?
>
> Se for assim, tem várias maneiras de fazer isso. Voce pode comerçar usando
> uma ER (http://www.aurelio.net/er/) para identificar o que são linhas de
> status e o que é "lixo".
>
> Uma coisa comum a toda linha de status é que ela tem um timestamp,
> reprsentado pela data+hora. Então esta ER pega tudo que tem um timestamp no
> formato usado pelo site:
>
> [0-3][0-9]\/[0-1][0-9]\/"20"[0-1][0-9]\ [0-2][0-9]\:[0-5][0-9]
>
> Atenção para o espaço em branco escapado (\ ) separando a hora da data.
>
> Bom, o status vem na linha seguinte, então você precisa da linha que tem o
> timestamp, mais a linha seguinte. "grep -A 2" faz isso para você.
>
> Mas você só quer a última atualização. O comando head pega só as primeiras
> e head -n 2 diz para pegar só as 2 primeiras.
>
> Agora é só juntar a linha que tem o timestamp, com a do status. Use o sed
> para isso. O comando para juntar as linhas é o ':a;$!N;s/\n//g;ta' (Aurélio
> denovo: http://aurelio.net/sed/sed-HOWTO/sed-HOWTO-7.html). Se quiser
> entender o porque da sopa de letrinhas, isso foi comentado aqui dias atrás (
> http://br.groups.yahoo.com/group/shell-script/message/29438).
>
> Então, juntando tudo isso, dá uma olhada como fica:
>
> http://pastebin.com/f2548cd8
>
> É isso que você queria fazer? Ajudou?
>
>
>


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




#29562 De: Anderson Duarte <andersonrizada@...>
Data: Ter, 7 de Jul de 2009 5:04 pm
Assunto: Re: Re: Ajuda Rastreamento Correios
andersonrizada@...
Enviar e-mail Enviar e-mail
 
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Olá Ernander!

No site do funcoesZZ do Aurelio, nas funçoes extras tem uma chamada
zzrastreamento que é justamente pra rastrear entregas dos correios.
Vê se te serve:
http://funcoeszz.googlecode.com/svn/trunk/extra/zzrastreamento

- --
_________________________________________
Anderson Dantas Duarte Linux user #432277
Linux é o estado da arte!
Preserve a arte, use Linux! :)
http://rizada.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iQEcBAEBAgAGBQJKU4AEAAoJEJ+X2bJFaOoc1r0H/1N/GTeezY4UqdNerk6/mbb7
YOVLJAxEzE0LURlu987Et5BtS22q2fh2+kAZKp77D0zqNHaiNWo4dvxBNsVqYB7V
wwncbTx9GhHP53NXN2fet0XMvm+tuUL485oIJRl9CzuTCkvGo7g42zugqxIcrA5Y
Pwjr1tWDh6/9b3cLWmiJBQqZ4lUe39dXPnN0/jDt5cmYQXNCdM6FQvCEhrKIJc0H
eorDPS6HSbJwJ7LirdQirlquqSEw515tUVhGR33v1dVI+LsWvc2j55Pk2J0SCfg6
Wx3q56EIWe4FS65GWXVhhhj7OTTkMc026Bh19cilB4gXhYwuDYMCHzxqij+m22A=
=zfx0
-----END PGP SIGNATURE-----




#29580 De: "Ernander (Nander)" <ernander@...>
Data: Qui, 9 de Jul de 2009 2:18 pm
Assunto: Re: Ajuda Rastreamento Correios
ernander2004
Offline Offline
Enviar e-mail Enviar e-mail
 
Bom dia A Todos!


Primeiramente gostaria de pedir Desculpas pela gafe do e-mail em html. E
para me redimir todos os exemplos que darei são impreterivelmente no
pastebin. Segundo que eu estive fora e não pude responder em tempo as
atenções ao meu problema.

Voltando ao assunto, estou comendo ER's para tentar enten der e fazer tudo
para obter um melhor resultado. A Solução do Cristiano Ferrari, como sempre
um grande colaborador da Lista, ajudou muito mas com o "head -n 2" estava
pegando uma linha a mais, o que foi consertado com um "head -n 1" ( basico
he he ) .

Ate agora Bakana! O problema Agora é :

como recebo um arquivo com as movimentações mensais desta forma:

ver 1º Exemplo do pastebin

preciso pegar o nome do Cliente (2º Campo), data da postagem (6º campo),
numero da encomenda (7º campo) e jogar junto com o retono da verificação
junto ao site dos correios a Data(1º campo de retorno), hora(segundo campo
de retorno) e o Status da encomenda( último campo de retorno) ( vide 2º
exemplo pastebin).

Nisso montando a Seguinte saída:

Vide 3 exemplo pastebin

Bom ate então, com a ajuda de vocês a tarefa parecia simples mas quando me
deparei que tem cidade com um nome maior que do de DOM PEDRO PRIMEIRO, e que
não conseguia buscar com um padrão o Status e nem o nome do Cliente pois o
numero de espaços é enorme e quase não é mensurável.

Como fazer para pegar a String com espaços tanto no nome do Cliente (
Arquivo de entrada) e do so Status na pesquisa do site ( sabendo que tem
Cidades com nomes muito grandes)

o meu simplório script segue:

Vide exemplo 4 do pastebin:

Se eu jogo o resultado da busca no site em uma variável RESULTADO da
busca no site e tento pegar somente o que me interessa assim:

echo $RESULTADO | awk '{ print $1 ";" $2 ";" $4 }'

Não Consigo pegar Somente o Status pois tenho Status Diversos como entregue
e Aguardando retirada. O mesmo ocorre qdo tento pegar o nome do Cliente que
tem espaços. ja no caso do Cliente eu poderia remover os Espaços do Arquivo
e trocar por UNDERLINE mas como proceder no retorno do Site?

Julio, como estou comendo o Seu LIVRINHO ( HE HE HE ), Aliás muito bom e
estou engatinhando nas ER's poderia me explicar a Sua onlinER ? pois não
funcionou aqui comigo. Quando vc se refere a arquivo na ER:


grep -A2 '[0-3][0-9]/[0-1][0-9]/20[0-1] [0-9] [0-2][0-9]:[0-5][0-9]' arquivo
| tail -2 | tr -d '\n'

Não entendi pois o retono é via pesquisa do Lynx e tambem havia substituido
pela ER do Cristiano e não deu certo.


valeu mesmo a ajuda e contem comigo no que eu puder ajudar!

Att
--
â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
â•‘ Ernander Lataliza â•‘
╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
--------------------------------------
SEJA LIVRE! USE LINUX!
Linux User #394812
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.6 (GNU/Linux)

mQGiBEnrmpwRBADsGwMo8R2spUxfer19bGyX5mAXRyEhm5vlzkOH9T7Fe4WyAvLM
rDpSKjv1VgcC3/fSMpPQ8MmQZwwO4H87IIwyN0AX/NqvmEQDNMVZS6omrcN39jpt
xEC80Hs/TP/yKyB2V6seHV0eZtjlfmokIb7nYazcxTLAhiv9CVg9nL+JCwCg+gNL
R+1rQcqGooGtjIL95OZr/8kEANpGy/Jb+B7Ajq4gatJ6qoedDyeyFFDRz8aV1OBJ
TCRh9T8MWjOhwvgcsGQV7R95VHgJNVGnej6yilMoM3NtIcyA2tbXAUerp5QhRAAi
2BU50z2JF5wl7YQ5ocSpOxp5Cq4sEBJYa/gTUzbLzztNc+ezCIKV403kEbE2IqSV
9rt3A/4vxcKsh9IX1At+vH9Ev850CXlRyxN4H7tRlGL+OdqQ76SR3tMi1qm4NRIp
p0Y7gJ8k9YdfWCgm56aLlSCCXlr80TXP5WHEH+sz2yDrw6iCj5ABeBMA5tdTae5y
bpx9QJgu5+1dYAK+FFWM+czPO11FM6nOKC3N+XSvrmM88dQhg7RHRXJuYW5kZXIg
TWFyY3VzIExhdGFsaXphIFJvc2VuZG8gKE5hbmRlciBMYXRhbGl6YSkgPGVybmFu
ZGVyQGdtYWlsLmNvbT6IYAQTEQIAIAUCSeuanAIbAwYLCQgHAwIEFQIIAwQWAgMB
Ah4BAheAAAoJEKahazXSKEoo15oAoPBiOWjUw0I2a6u7MtDPPwNPebG3AKDsoBuT
tcC4MzB17iNsOq819aV42rkBDQRJ65qdEAQApuFxoXRdeQrFIOJDyxE2EQi3GZby
2RP0+6iWiLbMk3XUGVsc477NTeGkEuDQA0SpkA5whL4wHWHCrYaE9rtmYMYW67ml
z/PUPWGI78cQ/R7M1ADPLGaD7cSxfdWzIHbhkP29x4zHTkSrdl4zT+XOHXwmAULp
ekzuKdb6whw676MAAwUD/isUOzlyF5sf/Q7RJRmLjOEEn5gpL/pf7ZzWHNxgxsPH
s1LlicO2yObH1cuVDXQDsc3a6ag61z1gCapa8Q1L/E5akKpU0irRzf99yNVzTp3i
BD9cua7h7fnfBMp6D4EyLDnUkCxOMD5HdIik1Ie6iHoVdCeDpYFnv72RplPI3dBB
iEkEGBECAAkFAknrmp0CGwwACgkQpqFrNdIoSiiUYgCgvHpf/Tkub4sWz/Vj91y6
BgH84hQAn3Z8pVMAUMJmmH/jRqJg49SS8AHc
=1sQ8
-----END PGP PUBLIC KEY BLOCK-----


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




#29581 De: "Ernander (Nander)" <ernander@...>
Data: Qui, 9 de Jul de 2009 2:20 pm
Assunto: Re: Ajuda Rastreamento Correios
ernander2004
Offline Offline
Enviar e-mail Enviar e-mail
 
Sem  o link do pastebin não rola né?  perdão novamente!

http://ubuntu.pastebin.com/m5129cc6b

Att

Ernander

2009/7/9 Ernander (Nander) <ernander@...>

> Bom dia A Todos!
>
>
> Primeiramente gostaria de pedir Desculpas pela gafe do e-mail em html. E
> para me redimir todos os exemplos que darei são impreterivelmente no
> pastebin. Segundo que eu estive fora e não pude responder em tempo as
> atenções ao meu problema.
>
> Voltando ao assunto, estou comendo ER's para tentar enten der e fazer tudo
> para obter um melhor resultado. A Solução do Cristiano Ferrari, como sempre
> um grande colaborador da Lista, ajudou muito mas com o "head -n 2" estava
> pegando uma linha a mais, o que foi consertado com um "head -n 1" ( basico
> he he ) .
>
> Ate agora Bakana! O problema Agora é :
>
> como recebo um arquivo com as movimentações mensais desta forma:
>
> ver 1º Exemplo do pastebin
>
> preciso pegar o nome do Cliente (2º Campo), data da postagem (6º campo),
> numero da encomenda (7º campo) e jogar junto com o retono da verificação
> junto ao site dos correios a Data(1º campo de retorno), hora(segundo campo
> de retorno) e o Status da encomenda( último campo de retorno) ( vide 2º
> exemplo pastebin).
>
> Nisso montando a Seguinte saída:
>
> Vide 3 exemplo pastebin
>
> Bom ate então, com a ajuda de vocês a tarefa parecia simples mas quando me
> deparei que tem cidade com um nome maior que do de DOM PEDRO PRIMEIRO, e que
> não conseguia buscar com um padrão o Status e nem o nome do Cliente pois o
> numero de espaços é enorme e quase não é mensurável.
>
> Como fazer para pegar a String com espaços tanto no nome do Cliente (
> Arquivo de entrada) e do so Status na pesquisa do site ( sabendo que tem
> Cidades com nomes muito grandes)
>
> o meu simplório script segue:
>
> Vide exemplo 4 do pastebin:
>
> Se eu jogo o resultado da busca no site em uma variável RESULTADO da
> busca no site e tento pegar somente o que me interessa assim:
>
> echo $RESULTADO | awk '{ print $1 ";" $2 ";" $4 }'
>
> Não Consigo pegar Somente o Status pois tenho Status Diversos como
> entregue e Aguardando retirada. O mesmo ocorre qdo tento pegar o nome do
> Cliente que tem espaços. ja no caso do Cliente eu poderia remover os Espaços
> do Arquivo e trocar por UNDERLINE mas como proceder no retorno do Site?
>
> Julio, como estou comendo o Seu LIVRINHO ( HE HE HE ), Aliás muito bom e
> estou engatinhando nas ER's poderia me explicar a Sua onlinER ? pois não
> funcionou aqui comigo. Quando vc se refere a arquivo na ER:
>
>
> grep -A2 '[0-3][0-9]/[0-1][0-9]/20[0-1] [0-9] [0-2][0-9]:[0-5][0-9]'
> arquivo | tail -2 | tr -d '\n'
>
> Não entendi pois o retono é via pesquisa do Lynx e tambem havia substituido
> pela ER do Cristiano e não deu certo.
>
>
> valeu mesmo a ajuda e contem comigo no que eu puder ajudar!
>
>
> Att
> --
> â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
> â•‘ Ernander Lataliza â•‘
> ╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
> --------------------------------------
> SEJA LIVRE! USE LINUX!
> Linux User #394812
> -----BEGIN PGP PUBLIC KEY BLOCK-----
> Version: GnuPG v1.4.6 (GNU/Linux)
>
> mQGiBEnrmpwRBADsGwMo8R2spUxfer19bGyX5mAXRyEhm5vlzkOH9T7Fe4WyAvLM
> rDpSKjv1VgcC3/fSMpPQ8MmQZwwO4H87IIwyN0AX/NqvmEQDNMVZS6omrcN39jpt
> xEC80Hs/TP/yKyB2V6seHV0eZtjlfmokIb7nYazcxTLAhiv9CVg9nL+JCwCg+gNL
> R+1rQcqGooGtjIL95OZr/8kEANpGy/Jb+B7Ajq4gatJ6qoedDyeyFFDRz8aV1OBJ
> TCRh9T8MWjOhwvgcsGQV7R95VHgJNVGnej6yilMoM3NtIcyA2tbXAUerp5QhRAAi
> 2BU50z2JF5wl7YQ5ocSpOxp5Cq4sEBJYa/gTUzbLzztNc+ezCIKV403kEbE2IqSV
> 9rt3A/4vxcKsh9IX1At+vH9Ev850CXlRyxN4H7tRlGL+OdqQ76SR3tMi1qm4NRIp
> p0Y7gJ8k9YdfWCgm56aLlSCCXlr80TXP5WHEH+sz2yDrw6iCj5ABeBMA5tdTae5y
> bpx9QJgu5+1dYAK+FFWM+czPO11FM6nOKC3N+XSvrmM88dQhg7RHRXJuYW5kZXIg
> TWFyY3VzIExhdGFsaXphIFJvc2VuZG8gKE5hbmRlciBMYXRhbGl6YSkgPGVybmFu
> ZGVyQGdtYWlsLmNvbT6IYAQTEQIAIAUCSeuanAIbAwYLCQgHAwIEFQIIAwQWAgMB
> Ah4BAheAAAoJEKahazXSKEoo15oAoPBiOWjUw0I2a6u7MtDPPwNPebG3AKDsoBuT
> tcC4MzB17iNsOq819aV42rkBDQRJ65qdEAQApuFxoXRdeQrFIOJDyxE2EQi3GZby
> 2RP0+6iWiLbMk3XUGVsc477NTeGkEuDQA0SpkA5whL4wHWHCrYaE9rtmYMYW67ml
> z/PUPWGI78cQ/R7M1ADPLGaD7cSxfdWzIHbhkP29x4zHTkSrdl4zT+XOHXwmAULp
> ekzuKdb6whw676MAAwUD/isUOzlyF5sf/Q7RJRmLjOEEn5gpL/pf7ZzWHNxgxsPH
> s1LlicO2yObH1cuVDXQDsc3a6ag61z1gCapa8Q1L/E5akKpU0irRzf99yNVzTp3i
> BD9cua7h7fnfBMp6D4EyLDnUkCxOMD5HdIik1Ie6iHoVdCeDpYFnv72RplPI3dBB
> iEkEGBECAAkFAknrmp0CGwwACgkQpqFrNdIoSiiUYgCgvHpf/Tkub4sWz/Vj91y6
> BgH84hQAn3Z8pVMAUMJmmH/jRqJg49SS8AHc
> =1sQ8
> -----END PGP PUBLIC KEY BLOCK-----
>



--
â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
â•‘ Ernander Lataliza â•‘
╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
--------------------------------------
SEJA LIVRE! USE LINUX!
Linux User #394812
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.6 (GNU/Linux)

mQGiBEnrmpwRBADsGwMo8R2spUxfer19bGyX5mAXRyEhm5vlzkOH9T7Fe4WyAvLM
rDpSKjv1VgcC3/fSMpPQ8MmQZwwO4H87IIwyN0AX/NqvmEQDNMVZS6omrcN39jpt
xEC80Hs/TP/yKyB2V6seHV0eZtjlfmokIb7nYazcxTLAhiv9CVg9nL+JCwCg+gNL
R+1rQcqGooGtjIL95OZr/8kEANpGy/Jb+B7Ajq4gatJ6qoedDyeyFFDRz8aV1OBJ
TCRh9T8MWjOhwvgcsGQV7R95VHgJNVGnej6yilMoM3NtIcyA2tbXAUerp5QhRAAi
2BU50z2JF5wl7YQ5ocSpOxp5Cq4sEBJYa/gTUzbLzztNc+ezCIKV403kEbE2IqSV
9rt3A/4vxcKsh9IX1At+vH9Ev850CXlRyxN4H7tRlGL+OdqQ76SR3tMi1qm4NRIp
p0Y7gJ8k9YdfWCgm56aLlSCCXlr80TXP5WHEH+sz2yDrw6iCj5ABeBMA5tdTae5y
bpx9QJgu5+1dYAK+FFWM+czPO11FM6nOKC3N+XSvrmM88dQhg7RHRXJuYW5kZXIg
TWFyY3VzIExhdGFsaXphIFJvc2VuZG8gKE5hbmRlciBMYXRhbGl6YSkgPGVybmFu
ZGVyQGdtYWlsLmNvbT6IYAQTEQIAIAUCSeuanAIbAwYLCQgHAwIEFQIIAwQWAgMB
Ah4BAheAAAoJEKahazXSKEoo15oAoPBiOWjUw0I2a6u7MtDPPwNPebG3AKDsoBuT
tcC4MzB17iNsOq819aV42rkBDQRJ65qdEAQApuFxoXRdeQrFIOJDyxE2EQi3GZby
2RP0+6iWiLbMk3XUGVsc477NTeGkEuDQA0SpkA5whL4wHWHCrYaE9rtmYMYW67ml
z/PUPWGI78cQ/R7M1ADPLGaD7cSxfdWzIHbhkP29x4zHTkSrdl4zT+XOHXwmAULp
ekzuKdb6whw676MAAwUD/isUOzlyF5sf/Q7RJRmLjOEEn5gpL/pf7ZzWHNxgxsPH
s1LlicO2yObH1cuVDXQDsc3a6ag61z1gCapa8Q1L/E5akKpU0irRzf99yNVzTp3i
BD9cua7h7fnfBMp6D4EyLDnUkCxOMD5HdIik1Ie6iHoVdCeDpYFnv72RplPI3dBB
iEkEGBECAAkFAknrmp0CGwwACgkQpqFrNdIoSiiUYgCgvHpf/Tkub4sWz/Vj91y6
BgH84hQAn3Z8pVMAUMJmmH/jRqJg49SS8AHc
=1sQ8
-----END PGP PUBLIC KEY BLOCK-----


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




#29582 De: "Cristiano Ferrari" <boxferrari@...>
Data: Qui, 9 de Jul de 2009 3:49 pm
Assunto: Re: Ajuda Rastreamento Correios
box_ferrari
Offline Offline
Enviar e-mail Enviar e-mail
 
--- Em shell-script@..., "Ernander (Nander)" <ernander@...>
escreveu
>
> Bom dia A Todos!
>
> Primeiramente gostaria de pedir Desculpas pela gafe do e-mail em html. E
> para me redimir todos os exemplos que darei são impreterivelmente no
> pastebin. Segundo que eu estive fora e não pude responder em tempo as
> atenções ao meu problema.
>
> Voltando ao assunto, estou comendo ER's para tentar enten der e fazer tudo
> para obter um melhor resultado. A Solução do Cristiano Ferrari, como sempre
> um grande colaborador da Lista, ajudou muito mas com o "head -n 2" estava
> pegando uma linha a mais, o que foi consertado com um "head -n 1" ( basico
> he he ) .
>
> Ate agora Bakana! O problema Agora é :
>
> como recebo um arquivo com as movimentações mensais desta forma:
>
> ver 1º Exemplo do pastebin
>
> preciso pegar o nome do Cliente (2º Campo), data da postagem (6º campo),
> numero da encomenda (7º campo) e jogar junto com o retono da verificação
> junto ao site dos correios a Data(1º campo de retorno), hora(segundo campo
> de retorno) e o Status da encomenda( último campo de retorno) ( vide 2º
> exemplo pastebin).
>
> Nisso montando a Seguinte saída:
>
> Vide 3 exemplo pastebin
>
> Bom ate então, com a ajuda de vocês a tarefa parecia simples mas quando me
> deparei que tem cidade com um nome maior que do de DOM PEDRO PRIMEIRO, e que
> não conseguia buscar com um padrão o Status e nem o nome do Cliente pois o
> numero de espaços é enorme e quase não é mensurável.
>
> Como fazer para pegar a String com espaços tanto no nome do Cliente (
> Arquivo de entrada) e do so Status na pesquisa do site ( sabendo que tem
> Cidades com nomes muito grandes)
>
> o meu simplório script segue:
>
> Vide exemplo 4 do pastebin:
>
> Se eu jogo o resultado da busca no site em uma variável RESULTADO da
> busca no site e tento pegar somente o que me interessa assim:
>
> echo $RESULTADO | awk '{ print $1 ";" $2 ";" $4 }'
>
> Não Consigo pegar Somente o Status pois tenho Status Diversos como entregue
> e Aguardando retirada. O mesmo ocorre qdo tento pegar o nome do Cliente que
> tem espaços. ja no caso do Cliente eu poderia remover os Espaços do Arquivo
> e trocar por UNDERLINE mas como proceder no retorno do Site?
>
> Julio, como estou comendo o Seu LIVRINHO ( HE HE HE ), Aliás muito bom e
> estou engatinhando nas ER's poderia me explicar a Sua onlinER ? pois não
> funcionou aqui comigo. Quando vc se refere a arquivo na ER:
>
>
> grep -A2 '[0-3][0-9]/[0-1][0-9]/20[0-1] [0-9] [0-2][0-9]:[0-5][0-9]' arquivo
> | tail -2 | tr -d '\n'
>
> Não entendi pois o retono é via pesquisa do Lynx e tambem havia substituido
> pela ER do Cristiano e não deu certo.
>
>
> valeu mesmo a ajuda e contem comigo no que eu puder ajudar!


Ilustre Ernander.

Se você tem o livro do Júlio, dá uma procurada nele sobre a variável $IFS
(internal field separator). É por ela que você começa a solução do seu problema.

Primeiro, você não precisa passar a linha inteira no while e depois ficar
cortando ela para achar os seus campos. Teu arquivo de origem é um CSV
(delimitado por ";"), você já tem os campos separados. Basta informá-los ao
while com uma sintaxe parecida com isto:

while read VAR1 VAR2 ... VARn ; do
comando1
comando2
done < /tmp/arquivo_origem.txt

Para cada campo no seu arquivo de origem, informe o nome de uma variável após o
read (CAMPO1=VAR1, CAMPO2=VAR2, etc.).

Daí, é só pegar o campo certo e fazer o que precisa com ele dentro do laço.

Porém, para que isso aconteça, é necessário que o shell reconheça que os ";" do
seu arquivo original são os separadores de campos. Por padrão, o IFS do bash é o
caracter espaço. Para mudar isso, basta, antes do laço (while), mudar o IFS;
atribuindo outro valor para a variável $IFS.

Porém, antes de mudar o valor, lembre-se de guardar o original em outra
variável, e voltar a ele logo após o fim do laço (done). Senão, "coisas
estranhas" podem acontecer.

Outro detalhe. Para concatenar o BR no número do track, você não precisa fazer
isso:

ENCOMENDA=`echo $CODIGO`BR

Basta um ENCOMENDA="$CODIGO"BR. Assim, você evita chamar mais um processo
desnecessário (o echo) e concatena o "BR" no momento que o bash faz a expansão
das variáveis. (isso também tá no livro do tio Júlio).

Aliás, no seu caso, você nem precisa se dar o trabalho de fazer isso, basta
acrescentar o BR como parte da URL que passa ao lynx. Economiza mais uma etapa
no script.

Já o problema do tamanho do nome da cidade você resolve fácil.

Lembra da dica do Júlio, de trocar o meu sed pelo tr? Adapta ela.

Usa o tr, mas ao invés de fazer com parametro -d, para excluir a ocorrência da
quebra de linha, troca por um caracter qualquer, que te servirá de marcador para
um cut. Por exemplo o #.

Assim, você faz um cut para pegar a data, outro para a hora (usando o espaço
como delimitador) e um outro cut para pegar o staus (usando o # como
delimtador). Pode também trocar os dois primeiros cuts por um um while, usando a
mesma lógica que te expliquei no início.

Então, dentro do laço, você joga o resultado da pesquisa vinda do lynx em uma
variável, depois corta ela e atribui a data em uma variável, a hora em outra, e
o status em outra.

Como você já tem os valores do arquivo original é só fazer um echo com todas
variáveis (as que vieram do links e as do arquivo original), intercalados com os
";", e terá a saída redondinha.

Geralmente não gosto de postar o script pronto, pois acho que te tira a
possibilidade de aprender. Então, tenta escrever ele aí que mais tarde e posto o
meu para você comparar. Até mesmo porque, agora o site dos correios está um coco
de lento e não vou postar o script sem testá-lo.

Abraço

Cristiano

Abraço










#29583 De: "Ernander (Nander)" <ernander@...>
Data: Qui, 9 de Jul de 2009 5:39 pm
Assunto: Re: Re: Ajuda Rastreamento Correios
ernander2004
Offline Offline
Enviar e-mail Enviar e-mail
 
Ok !!!

Como te disse Comprei o Livro do Julio... Mas ele veio com defeitos e o
Devolvi. E como o novo chegou to indo aos poucos e testando, mas vou pular
para a parte do IFS

valeu mesmo!

P.S o Site dos Correios é um Lixo mesmo . ....


Att


Ernander

2009/7/9 Cristiano Ferrari <boxferrari@...>

>
>
> --- Em shell-script@... <shell-script%40yahoogrupos.com.br>,
> "Ernander (Nander)" <ernander@...> escreveu
>
> >
> > Bom dia A Todos!
> >
> > Primeiramente gostaria de pedir Desculpas pela gafe do e-mail em html. E
> > para me redimir todos os exemplos que darei são impreterivelmente no
> > pastebin. Segundo que eu estive fora e não pude responder em tempo as
> > atenções ao meu problema.
> >
> > Voltando ao assunto, estou comendo ER's para tentar enten der e fazer
> tudo
> > para obter um melhor resultado. A Solução do Cristiano Ferrari, como
> sempre
> > um grande colaborador da Lista, ajudou muito mas com o "head -n 2" estava
> > pegando uma linha a mais, o que foi consertado com um "head -n 1" (
> basico
> > he he ) .
> >
> > Ate agora Bakana! O problema Agora é :
> >
> > como recebo um arquivo com as movimentações mensais desta forma:
> >
> > ver 1º Exemplo do pastebin
> >
> > preciso pegar o nome do Cliente (2º Campo), data da postagem (6º campo),
> > numero da encomenda (7º campo) e jogar junto com o retono da verificação
> > junto ao site dos correios a Data(1º campo de retorno), hora(segundo
> campo
> > de retorno) e o Status da encomenda( último campo de retorno) ( vide 2º
> > exemplo pastebin).
> >
> > Nisso montando a Seguinte saída:
> >
> > Vide 3 exemplo pastebin
> >
> > Bom ate então, com a ajuda de vocês a tarefa parecia simples mas quando
> me
> > deparei que tem cidade com um nome maior que do de DOM PEDRO PRIMEIRO, e
> que
> > não conseguia buscar com um padrão o Status e nem o nome do Cliente pois
> o
> > numero de espaços é enorme e quase não é mensurável.
> >
> > Como fazer para pegar a String com espaços tanto no nome do Cliente (
> > Arquivo de entrada) e do so Status na pesquisa do site ( sabendo que tem
> > Cidades com nomes muito grandes)
> >
> > o meu simplório script segue:
> >
> > Vide exemplo 4 do pastebin:
> >
> > Se eu jogo o resultado da busca no site em uma variável RESULTADO da
> > busca no site e tento pegar somente o que me interessa assim:
> >
> > echo $RESULTADO | awk '{ print $1 ";" $2 ";" $4 }'
> >
> > Não Consigo pegar Somente o Status pois tenho Status Diversos como
> entregue
> > e Aguardando retirada. O mesmo ocorre qdo tento pegar o nome do Cliente
> que
> > tem espaços. ja no caso do Cliente eu poderia remover os Espaços do
> Arquivo
> > e trocar por UNDERLINE mas como proceder no retorno do Site?
> >
> > Julio, como estou comendo o Seu LIVRINHO ( HE HE HE ), Aliás muito bom e
> > estou engatinhando nas ER's poderia me explicar a Sua onlinER ? pois não
> > funcionou aqui comigo. Quando vc se refere a arquivo na ER:
> >
> >
> > grep -A2 '[0-3][0-9]/[0-1][0-9]/20[0-1] [0-9] [0-2][0-9]:[0-5][0-9]'
> arquivo
> > | tail -2 | tr -d '\n'
> >
> > Não entendi pois o retono é via pesquisa do Lynx e tambem havia
> substituido
> > pela ER do Cristiano e não deu certo.
> >
> >
> > valeu mesmo a ajuda e contem comigo no que eu puder ajudar!
>
> Ilustre Ernander.
>
> Se você tem o livro do Júlio, dá uma procurada nele sobre a variável $IFS
> (internal field separator). É por ela que você começa a solução do seu
> problema.
>
> Primeiro, você não precisa passar a linha inteira no while e depois ficar
> cortando ela para achar os seus campos. Teu arquivo de origem é um CSV
> (delimitado por ";"), você já tem os campos separados. Basta informá-los ao
> while com uma sintaxe parecida com isto:
>
> while read VAR1 VAR2 ... VARn ; do
> comando1
> comando2
> done < /tmp/arquivo_origem.txt
>
> Para cada campo no seu arquivo de origem, informe o nome de uma variável
> após o read (CAMPO1=VAR1, CAMPO2=VAR2, etc.).
>
> Daí, é só pegar o campo certo e fazer o que precisa com ele dentro do
laço.
>
> Porém, para que isso aconteça, é necessário que o shell reconheça que os
> ";" do seu arquivo original são os separadores de campos. Por padrão, o IFS
> do bash é o caracter espaço. Para mudar isso, basta, antes do laço (while),
> mudar o IFS; atribuindo outro valor para a variável $IFS.
>
> Porém, antes de mudar o valor, lembre-se de guardar o original em outra
> variável, e voltar a ele logo após o fim do laço (done). Senão, "coisas
> estranhas" podem acontecer.
>
> Outro detalhe. Para concatenar o BR no número do track, você não precisa
> fazer isso:
>
> ENCOMENDA=`echo $CODIGO`BR
>
> Basta um ENCOMENDA="$CODIGO"BR. Assim, você evita chamar mais um processo
> desnecessário (o echo) e concatena o "BR" no momento que o bash faz a
> expansão das variáveis. (isso também tá no livro do tio Júlio).
>
> Aliás, no seu caso, você nem precisa se dar o trabalho de fazer isso, basta
> acrescentar o BR como parte da URL que passa ao lynx. Economiza mais uma
> etapa no script.
>
> Já o problema do tamanho do nome da cidade você resolve fácil.
>
> Lembra da dica do Júlio, de trocar o meu sed pelo tr? Adapta ela.
>
> Usa o tr, mas ao invés de fazer com parametro -d, para excluir a ocorrência
> da quebra de linha, troca por um caracter qualquer, que te servirá de
> marcador para um cut. Por exemplo o #.
>
> Assim, você faz um cut para pegar a data, outro para a hora (usando o
> espaço como delimitador) e um outro cut para pegar o staus (usando o # como
> delimtador). Pode também trocar os dois primeiros cuts por um um while,
> usando a mesma lógica que te expliquei no início.
>
> Então, dentro do laço, você joga o resultado da pesquisa vinda do lynx em
> uma variável, depois corta ela e atribui a data em uma variável, a hora em
> outra, e o status em outra.
>
> Como você já tem os valores do arquivo original é só fazer um echo com
> todas variáveis (as que vieram do links e as do arquivo original),
> intercalados com os ";", e terá a saída redondinha.
>
> Geralmente não gosto de postar o script pronto, pois acho que te tira a
> possibilidade de aprender. Então, tenta escrever ele aí que mais tarde e
> posto o meu para você comparar. Até mesmo porque, agora o site dos correios
> está um coco de lento e não vou postar o script sem testá-lo.
>
> Abraço
>
> Cristiano
>
> Abraço
>
>
>



--
â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
â•‘ Ernander Lataliza â•‘
╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
--------------------------------------
SEJA LIVRE! USE LINUX!
Linux User #394812
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.6 (GNU/Linux)

mQGiBEnrmpwRBADsGwMo8R2spUxfer19bGyX5mAXRyEhm5vlzkOH9T7Fe4WyAvLM
rDpSKjv1VgcC3/fSMpPQ8MmQZwwO4H87IIwyN0AX/NqvmEQDNMVZS6omrcN39jpt
xEC80Hs/TP/yKyB2V6seHV0eZtjlfmokIb7nYazcxTLAhiv9CVg9nL+JCwCg+gNL
R+1rQcqGooGtjIL95OZr/8kEANpGy/Jb+B7Ajq4gatJ6qoedDyeyFFDRz8aV1OBJ
TCRh9T8MWjOhwvgcsGQV7R95VHgJNVGnej6yilMoM3NtIcyA2tbXAUerp5QhRAAi
2BU50z2JF5wl7YQ5ocSpOxp5Cq4sEBJYa/gTUzbLzztNc+ezCIKV403kEbE2IqSV
9rt3A/4vxcKsh9IX1At+vH9Ev850CXlRyxN4H7tRlGL+OdqQ76SR3tMi1qm4NRIp
p0Y7gJ8k9YdfWCgm56aLlSCCXlr80TXP5WHEH+sz2yDrw6iCj5ABeBMA5tdTae5y
bpx9QJgu5+1dYAK+FFWM+czPO11FM6nOKC3N+XSvrmM88dQhg7RHRXJuYW5kZXIg
TWFyY3VzIExhdGFsaXphIFJvc2VuZG8gKE5hbmRlciBMYXRhbGl6YSkgPGVybmFu
ZGVyQGdtYWlsLmNvbT6IYAQTEQIAIAUCSeuanAIbAwYLCQgHAwIEFQIIAwQWAgMB
Ah4BAheAAAoJEKahazXSKEoo15oAoPBiOWjUw0I2a6u7MtDPPwNPebG3AKDsoBuT
tcC4MzB17iNsOq819aV42rkBDQRJ65qdEAQApuFxoXRdeQrFIOJDyxE2EQi3GZby
2RP0+6iWiLbMk3XUGVsc477NTeGkEuDQA0SpkA5whL4wHWHCrYaE9rtmYMYW67ml
z/PUPWGI78cQ/R7M1ADPLGaD7cSxfdWzIHbhkP29x4zHTkSrdl4zT+XOHXwmAULp
ekzuKdb6whw676MAAwUD/isUOzlyF5sf/Q7RJRmLjOEEn5gpL/pf7ZzWHNxgxsPH
s1LlicO2yObH1cuVDXQDsc3a6ag61z1gCapa8Q1L/E5akKpU0irRzf99yNVzTp3i
BD9cua7h7fnfBMp6D4EyLDnUkCxOMD5HdIik1Ie6iHoVdCeDpYFnv72RplPI3dBB
iEkEGBECAAkFAknrmp0CGwwACgkQpqFrNdIoSiiUYgCgvHpf/Tkub4sWz/Vj91y6
BgH84hQAn3Z8pVMAUMJmmH/jRqJg49SS8AHc
=1sQ8
-----END PGP PUBLIC KEY BLOCK-----


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




#29584 De: "Julio C. Neves" <julio.neves@...>
Data: Qui, 9 de Jul de 2009 10:27 pm
Assunto: Re: Re: Ajuda Rastreamento Correios
julioneves99
Offline Offline
Enviar e-mail Enviar e-mail
 
Fala Nander,
Não estou chamando a tua atenção, mas te dando uma dica: os Correios são
grande usuários de Sw Livre e, portanto, deve ter um monte de profissionais
de lá nesta lista.

Somente retificando uma informação que rolou, o default do $IFS não é só
espaço em branco. É <espaço> <tab> e <enter>.

Se vc quer estudar direto o funcionamento do IFS, faça-o
aqui<https://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo005#Inter_Field_Separat\
or_Tabajara_I
>
.
--
Abraços,
Julio
Cursos de Shell e Zenity?

- Em SP ligue (11) 2125-4747;

- Em DF ligue (61) 3223-3000;

- No RJ darei um treinamento em 23, 24 e 25/07 (p/ detalhes ligue (21)
2561-0867);
- Turmas fechadas em outras cidades ligue (21) 8112-9988


2009/7/9 Ernander (Nander) <ernander@...>

>
>
> Ok !!!
>
> Como te disse Comprei o Livro do Julio... Mas ele veio com defeitos e o
> Devolvi. E como o novo chegou to indo aos poucos e testando, mas vou pular
> para a parte do IFS
>
> valeu mesmo!
>
> P.S o Site dos Correios é um Lixo mesmo . ....
>
> Att
>
> Ernander
>
> 2009/7/9 Cristiano Ferrari <boxferrari@... <boxferrari%40gmail.com>>
>
> >
> >
> > --- Em
shell-script@...<shell-script%40yahoogrupos.com.br><shell-script%
> 40yahoogrupos.com.br>,
>
> > "Ernander (Nander)" <ernander@...> escreveu
> >
> > >
> > > Bom dia A Todos!
> > >
> > > Primeiramente gostaria de pedir Desculpas pela gafe do e-mail em html.
> E
> > > para me redimir todos os exemplos que darei são impreterivelmente no
> > > pastebin. Segundo que eu estive fora e não pude responder em tempo as
> > > atenções ao meu problema.
> > >
> > > Voltando ao assunto, estou comendo ER's para tentar enten der e fazer
> > tudo
> > > para obter um melhor resultado. A Solução do Cristiano Ferrari, como
> > sempre
> > > um grande colaborador da Lista, ajudou muito mas com o "head -n 2"
> estava
> > > pegando uma linha a mais, o que foi consertado com um "head -n 1" (
> > basico
> > > he he ) .
> > >
> > > Ate agora Bakana! O problema Agora é :
> > >
> > > como recebo um arquivo com as movimentações mensais desta forma:
> > >
> > > ver 1º Exemplo do pastebin
> > >
> > > preciso pegar o nome do Cliente (2º Campo), data da postagem (6º
> campo),
> > > numero da encomenda (7º campo) e jogar junto com o retono da
> verificação
> > > junto ao site dos correios a Data(1º campo de retorno), hora(segundo
> > campo
> > > de retorno) e o Status da encomenda( último campo de retorno) ( vide 2º
> > > exemplo pastebin).
> > >
> > > Nisso montando a Seguinte saída:
> > >
> > > Vide 3 exemplo pastebin
> > >
> > > Bom ate então, com a ajuda de vocês a tarefa parecia simples mas quando
> > me
> > > deparei que tem cidade com um nome maior que do de DOM PEDRO PRIMEIRO,
> e
> > que
> > > não conseguia buscar com um padrão o Status e nem o nome do Cliente
> pois
> > o
> > > numero de espaços é enorme e quase não é mensurável.
> > >
> > > Como fazer para pegar a String com espaços tanto no nome do Cliente (
> > > Arquivo de entrada) e do so Status na pesquisa do site ( sabendo que
> tem
> > > Cidades com nomes muito grandes)
> > >
> > > o meu simplório script segue:
> > >
> > > Vide exemplo 4 do pastebin:
> > >
> > > Se eu jogo o resultado da busca no site em uma variável RESULTADO da
> > > busca no site e tento pegar somente o que me interessa assim:
> > >
> > > echo $RESULTADO | awk '{ print $1 ";" $2 ";" $4 }'
> > >
> > > Não Consigo pegar Somente o Status pois tenho Status Diversos como
> > entregue
> > > e Aguardando retirada. O mesmo ocorre qdo tento pegar o nome do Cliente
> > que
> > > tem espaços. ja no caso do Cliente eu poderia remover os Espaços do
> > Arquivo
> > > e trocar por UNDERLINE mas como proceder no retorno do Site?
> > >
> > > Julio, como estou comendo o Seu LIVRINHO ( HE HE HE ), Aliás muito bom
> e
> > > estou engatinhando nas ER's poderia me explicar a Sua onlinER ? pois
> não
> > > funcionou aqui comigo. Quando vc se refere a arquivo na ER:
> > >
> > >
> > > grep -A2 '[0-3][0-9]/[0-1][0-9]/20[0-1] [0-9] [0-2][0-9]:[0-5][0-9]'
> > arquivo
> > > | tail -2 | tr -d '\n'
> > >
> > > Não entendi pois o retono é via pesquisa do Lynx e tambem havia
> > substituido
> > > pela ER do Cristiano e não deu certo.
> > >
> > >
> > > valeu mesmo a ajuda e contem comigo no que eu puder ajudar!
> >
> > Ilustre Ernander.
> >
> > Se você tem o livro do Júlio, dá uma procurada nele sobre a variável
$IFS
> > (internal field separator). É por ela que você começa a solução do seu
> > problema.
> >
> > Primeiro, você não precisa passar a linha inteira no while e depois ficar
> > cortando ela para achar os seus campos. Teu arquivo de origem é um CSV
> > (delimitado por ";"), você já tem os campos separados. Basta informá-los
> ao
> > while com uma sintaxe parecida com isto:
> >
> > while read VAR1 VAR2 ... VARn ; do
> > comando1
> > comando2
> > done < /tmp/arquivo_origem.txt
> >
> > Para cada campo no seu arquivo de origem, informe o nome de uma variável
> > após o read (CAMPO1=VAR1, CAMPO2=VAR2, etc.).
> >
> > Daí, é só pegar o campo certo e fazer o que precisa com ele dentro do
> laço.
> >
> > Porém, para que isso aconteça, é necessário que o shell reconheça que
os
> > ";" do seu arquivo original são os separadores de campos. Por padrão, o
> IFS
> > do bash é o caracter espaço. Para mudar isso, basta, antes do laço
> (while),
> > mudar o IFS; atribuindo outro valor para a variável $IFS.
> >
> > Porém, antes de mudar o valor, lembre-se de guardar o original em outra
> > variável, e voltar a ele logo após o fim do laço (done). Senão, "coisas
> > estranhas" podem acontecer.
> >
> > Outro detalhe. Para concatenar o BR no número do track, você não precisa
> > fazer isso:
> >
> > ENCOMENDA=`echo $CODIGO`BR
> >
> > Basta um ENCOMENDA="$CODIGO"BR. Assim, você evita chamar mais um processo
> > desnecessário (o echo) e concatena o "BR" no momento que o bash faz a
> > expansão das variáveis. (isso também tá no livro do tio Júlio).
> >
> > Aliás, no seu caso, você nem precisa se dar o trabalho de fazer isso,
> basta
> > acrescentar o BR como parte da URL que passa ao lynx. Economiza mais uma
> > etapa no script.
> >
> > Já o problema do tamanho do nome da cidade você resolve fácil.
> >
> > Lembra da dica do Júlio, de trocar o meu sed pelo tr? Adapta ela.
> >
> > Usa o tr, mas ao invés de fazer com parametro -d, para excluir a
> ocorrência
> > da quebra de linha, troca por um caracter qualquer, que te servirá de
> > marcador para um cut. Por exemplo o #.
> >
> > Assim, você faz um cut para pegar a data, outro para a hora (usando o
> > espaço como delimitador) e um outro cut para pegar o staus (usando o #
> como
> > delimtador). Pode também trocar os dois primeiros cuts por um um while,
> > usando a mesma lógica que te expliquei no início.
> >
> > Então, dentro do laço, você joga o resultado da pesquisa vinda do lynx em
> > uma variável, depois corta ela e atribui a data em uma variável, a hora
> em
> > outra, e o status em outra.
> >
> > Como você já tem os valores do arquivo original é só fazer um echo com
> > todas variáveis (as que vieram do links e as do arquivo original),
> > intercalados com os ";", e terá a saída redondinha.
> >
> > Geralmente não gosto de postar o script pronto, pois acho que te tira a
> > possibilidade de aprender. Então, tenta escrever ele aí que mais tarde e
> > posto o meu para você comparar. Até mesmo porque, agora o site dos
> correios
> > está um coco de lento e não vou postar o script sem testá-lo.
> >
> > Abraço
> >
> > Cristiano
> >
> > Abraço
> >
> >
> >
>
> --
> â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
> â•‘ Ernander Lataliza â•‘
> ╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
> --------------------------------------
> SEJA LIVRE! USE LINUX!
> Linux User #394812
> -----BEGIN PGP PUBLIC KEY BLOCK-----
> Version: GnuPG v1.4.6 (GNU/Linux)
>
> mQGiBEnrmpwRBADsGwMo8R2spUxfer19bGyX5mAXRyEhm5vlzkOH9T7Fe4WyAvLM
> rDpSKjv1VgcC3/fSMpPQ8MmQZwwO4H87IIwyN0AX/NqvmEQDNMVZS6omrcN39jpt
> xEC80Hs/TP/yKyB2V6seHV0eZtjlfmokIb7nYazcxTLAhiv9CVg9nL+JCwCg+gNL
> R+1rQcqGooGtjIL95OZr/8kEANpGy/Jb+B7Ajq4gatJ6qoedDyeyFFDRz8aV1OBJ
> TCRh9T8MWjOhwvgcsGQV7R95VHgJNVGnej6yilMoM3NtIcyA2tbXAUerp5QhRAAi
> 2BU50z2JF5wl7YQ5ocSpOxp5Cq4sEBJYa/gTUzbLzztNc+ezCIKV403kEbE2IqSV
> 9rt3A/4vxcKsh9IX1At+vH9Ev850CXlRyxN4H7tRlGL+OdqQ76SR3tMi1qm4NRIp
> p0Y7gJ8k9YdfWCgm56aLlSCCXlr80TXP5WHEH+sz2yDrw6iCj5ABeBMA5tdTae5y
> bpx9QJgu5+1dYAK+FFWM+czPO11FM6nOKC3N+XSvrmM88dQhg7RHRXJuYW5kZXIg
> TWFyY3VzIExhdGFsaXphIFJvc2VuZG8gKE5hbmRlciBMYXRhbGl6YSkgPGVybmFu
> ZGVyQGdtYWlsLmNvbT6IYAQTEQIAIAUCSeuanAIbAwYLCQgHAwIEFQIIAwQWAgMB
> Ah4BAheAAAoJEKahazXSKEoo15oAoPBiOWjUw0I2a6u7MtDPPwNPebG3AKDsoBuT
> tcC4MzB17iNsOq819aV42rkBDQRJ65qdEAQApuFxoXRdeQrFIOJDyxE2EQi3GZby
> 2RP0+6iWiLbMk3XUGVsc477NTeGkEuDQA0SpkA5whL4wHWHCrYaE9rtmYMYW67ml
> z/PUPWGI78cQ/R7M1ADPLGaD7cSxfdWzIHbhkP29x4zHTkSrdl4zT+XOHXwmAULp
> ekzuKdb6whw676MAAwUD/isUOzlyF5sf/Q7RJRmLjOEEn5gpL/pf7ZzWHNxgxsPH
> s1LlicO2yObH1cuVDXQDsc3a6ag61z1gCapa8Q1L/E5akKpU0irRzf99yNVzTp3i
> BD9cua7h7fnfBMp6D4EyLDnUkCxOMD5HdIik1Ie6iHoVdCeDpYFnv72RplPI3dBB
> iEkEGBECAAkFAknrmp0CGwwACgkQpqFrNdIoSiiUYgCgvHpf/Tkub4sWz/Vj91y6
> BgH84hQAn3Z8pVMAUMJmmH/jRqJg49SS8AHc
> =1sQ8
> -----END PGP PUBLIC KEY BLOCK-----
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>


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




 
Avançado

Copyright © 2009 Yahoo! do Brasil Internet Ltda. Todos os direitos reservados.
Política de Privacidade - Termos do Serviço - Diretrizes - Ajuda