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: Tue, 7 Jul 2009 10:53:36 -0300

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

>
>
> --- Em address@hidden <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]



reply via email to

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