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

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

Re: [shell-script] formatação condicional com awk


From: Leslie Watter
Subject: Re: [shell-script] formatação condicional com awk
Date: Wed, 11 Jul 2007 09:43:46 -0300

Oi Cristiano

Não tenho o log do squid aqui, mas sei o que pode te ajudar :)

No awk você pode usar o printf como abaixo:

---

  $ awk '{ printf "%-10s %s\n", $1, $2 }' BBS-list
     -| aardvark   555-5553
     -| alpo-net   555-3412
     -| barfly     555-7685
     -| bites      555-1675
     -| camelot    555-0542
http://www.gnu.org/manual/gawk/html_node/Printf-Examples.html

---

e para deixar só a coluna que vc quer em vermelho, use os seguintes códigos
de cor (para deixar com a cor que vc quiser depois)

---

http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

---

Sendo assim:
/TCP_DENIED/
printf("%d/%m/%y %H:%M %-15s \033[31m %-25s  \033[m%-80s", $1, $8,
substr($4,1,index($4,"/"))), substr($7,1,80)) )

Faltou colocar o $3 em algum lugar, provavelmente no final do teu printf vai
ter um %s ou %d, depende do teu arquivo ...

Não testei aqui, mas é só vc modificar um pouco o printf que deve funcionar
pra ti :)


[]'s

LEslie

2007/7/10, Cristiano Ferrari <address@hidden>:
>
>   Caríssimos, boa noite.
>
> Estou montando um script para facilitar a leitura do log do squid.
>
> O objetivo é tornar a verificação mais rápida, tabulando apenas os
> campos que necessito em colunas de tamanho fixo. Isto é para aquelas
> horas quando você quer dar uma rápida chegada no que passou ou não
> pelo proxy.
>
> Para isso eu converti a data em um formato "humanamente" legível e
> listei os campos que necessito ver, usando o awk. Tudo muito bom e
> muito lindo, exceto por um detalhe.
>
> Eu gostaria que, se o acesso fosse negado, a linha fosse impressa em
> vermelho, para facilitar a localização de bloqueios. Quase consegui.
>
> O script ficou assim:
>
> awk '{if (substr($4,1,index($4,"/"))=="TCP_DENIED/") {print
> "\033[31m"} else {print "\033[m"}} \
> {print \
> strftime("%d/%m/%y %H:%M",$1) \
> " " \
> sprintf("%-15s",$8) \
> " " \
> sprintf("%-25s",substr($4,1,index($4,"/"))) \
> " " \
> sprintf("%-80s",substr($7,1,80)) \
> " " \
> $3 } \
> {print "\033[m"}' /var/log/squid/access.log
>
> Tá quase bom, mas há um problema. Minha intenção era colocar o if
> dentro de um único print, mas não consegui acertar a sintaxe. Do modo
> com está, que quase resolve o problema, a cada chamada do print uma
> quebra de linha é adicionada, fazendo com que sejam impressas várias
> linhas em branco entre uma linha de dados e outra.
>
> Alguém pode sugerir uma maneira de eu jogar a cor sem produzir linhas
> em branco?
>
> E se eu quisesse que apenas a coluna que imprime o parâmetro $4
> ficasse vermelha, e não a linha inteira, como poderia fazer?
>
> Abraço a todos.
>
> Cristiano Ferrari
>
>  
>



-- 
Leslie H. Watter


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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