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

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

Re: [shell-script] Re: Ajuda Rastreamento Correios


From: Julio C. Neves
Subject: Re: [shell-script] Re: Ajuda Rastreamento Correios
Date: Thu, 9 Jul 2009 19:27:39 -0300

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_Separator_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) <address@hidden>

>
>
> 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 <address@hidden <boxferrari%40gmail.com>>
>
> >
> >
> > --- Em address@hidden<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]



reply via email to

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