[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
- formatação condicional com awk,
Cristiano Ferrari <=