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

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

Re: [shell-script] grep ou sed


From: Adam Victor Brandizzi
Subject: Re: [shell-script] grep ou sed
Date: Mon, 7 Mar 2005 19:28:26 -0300 (ART)

 --- Eliphas Levy Theodoro <address@hidden> 
> 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: address@hidden
alternativa: address@hidden
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]