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

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

grep ou sed - melhorado


From: lferreir1
Subject: grep ou sed - melhorado
Date: Tue, 08 Mar 2005 11:07:14 -0000
User-agent: eGroups-EW/0.82

Valeu pelas dicas, porém eu acho que não expressei bem o meu exemplo.
Abaixo um pedaço do arquivo de log, ao qual quero extrair alguma 
informaçoes.
# cat bkdump_full1_0803_02.log
  BACKUP INICIADO EM Tue Mar 8 02:31:48 GMT 2005
  DUMP: Writing 63 Kilobyte records
  DUMP: Date of this level 0 dump: Tue Mar 08 02:31:54 2005
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/rdsk/c7t1d10s0 (edglobo2:/u11) to /dev/rmt/2un.
  DUMP: Mapping (Pass I) [regular files]
  DUMP: Mapping (Pass II) [directories]
  DUMP: Estimated 32164476 blocks (15705.31MB).
  DUMP: Dumping (Pass III) [directories]
  DUMP: Dumping (Pass IV) [regular files]
  DUMP: 35.90% done, finished in 0:17
  DUMP: 71.55% done, finished in 0:07
  DUMP: 32164396 blocks (15705.27MB) on 1 volume at 9653 KB/sec
  DUMP: Archiving dump to 
`/u00/prd/globo/log/bkdump_full1_0803_02_archive_u11'
  DUMP: DUMP IS DONE
  DUMP: Level 0 dump on Tue Mar 08 02:31:54 2005
  DUMP: Writing 63 Kilobyte records
  DUMP: Date of this level 0 dump: Tue Mar 08 02:59:48 2005
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/rdsk/c7t1d3s0 (edglobo2:/u06) to /dev/rmt/2un.
  DUMP: Mapping (Pass I) [regular files]
  DUMP: Mapping (Pass II) [directories]
  DUMP: Estimated 34688586 blocks (16937.79MB).
  ........
  ........
  DUMP: 32711236 blocks (15972.28MB) on 2 volumes at 8497 KB/sec
  DUMP: Archiving dump to 
`/u00/prd/globo/log/bkdump_full1_0803_02_archive_u08'
  DUMP: DUMP IS DONE
  DUMP: Level 0 dump on Tue Mar 08 06:07:34 2005
TERMINO DO BACKUP AS Tue Mar 8 06:42:01 GMT 2005

Quais informações eu quero:
BACKUP INICIADO EM Tue Mar 8 02:31:48 GMT 2005
DUMP: Dumping /dev/rdsk/c7t1d10s0 (edglobo2:/u11) to /dev/rmt/2un.
DUMP: 32164396 blocks (15705.27MB) on 1 volume at 9653 KB/sec
DUMP: Dumping /dev/rdsk/c7t1d3s0 (edglobo2:/u06) to /dev/rmt/2un.
DUMP: 34688554 blocks (16937.77MB) on 1 volume at 9481 KB/sec
......
......
TERMINO DO BACKUP AS Tue Mar 8 06:42:01 GMT 2005

Como podem perceber, preciso pegar somente as informações como início 
e o fim (isso eu sei fazer, com sed q $i e sed '$!d' ), mas não sei 
como pegar a próxima informação, como qual FS que está dumpeando,
o próximo que fala quantos MB foram gravados na mídia, e por aí vai

 Espriquei ou compriquei? 
 Valeu mais uma vêz!
 Luiz






--- Em address@hidden, Adam Victor Brandizzi 
<qbyron@y...> escreveu
>  --- Eliphas Levy Theodoro <yahoo@e...> 
> > Olá Luiz,
> > 
> > Não entendi bem o padrão que você deseja. Pelo
> > que parece você quer
> > todas as linhas ímpares (começa em UM), e a
> > última. É isso? Se não,
> > explica de novo pra gente.
> > 
> > Caso o arquivo tiver número de linhas par, esse
> > sed vai te dar as
> > linhas pares do arquivo:
> > $ sed -n '1~2p' arq.log
> > 
> > Caso for ímpar, esse outro vai dar as linhas
> > pares, e a última linha:
> > $ sed -n '1~2p;$p' arq.log
> > 
> > Você pode checar se é par ou ímpar antes, com o
> > wc:
> > 
> > #!/bin/bash
> > if wc -l < arq.log | grep -q "[02468]$"; then
> >      sed -n '1~2p' arq.log
> > else
> >      sed -n '1~2p;$p' arq.log
> > fi
> 
> Bom! A primeira solução não é muito boa porque
> repetiria a última linha se ela também fosse
> ímpar, e a segunda ainda evita isto, mas há como
> evitar chamadas ao wc, ao if e ao grep:
> 
> sed -n '1~2{p,d};$p' arq.log
> 
> Neste caso, se a linha for ímpar, ele imprime e
> apaga o conteúdo do espaço de comparação, de modo
> que, se o segundo comando ($p) for executado, não
> haverá mais linha a ser apagada. É um pouco mais
> eficiente - mas acho que escrevi isto mais por
> ser um viciado em sed :D, já que nem sabemos ao
> certo qual a saída esperada...
> 
> =====
> '()
> 
> Adam Victor Nazareth Brandizzi
> Estudante de Ciência da Computação - UnB
> e-mail: adam@c...
> alternativa: qbyron@y...
> ICQ: 168537710
> 
> __________________________________________________
> Converse com seus amigos em tempo real com o Yahoo! Messenger 
> http://br.download.yahoo.com/messenger/




reply via email to

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