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 <[email protected]> > > > --- Em [email protected] <shell-script%40yahoogrupos.com.br>, > "Ernander (Nander)" <ernan...@...> 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]
