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

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

formatação condicional com awk


From: Cristiano Ferrari
Subject: formatação condicional com awk
Date: Wed, 11 Jul 2007 00:08:48 -0000
User-agent: eGroups-EW/0.82

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



reply via email to

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