[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Edição e ordenação por data em arquivos Log
From: |
jimmy |
Subject: |
Re: [shell-script] Edição e ordenação por data em arquivos Log |
Date: |
Tue, 6 Dec 2011 18:22:38 -0200 |
User-agent: |
mutt-ng/devel-r804 (Linux) |
On Tue, Dec 06, 2011 at 03:22:04PM -0200, ®i©@®ÐØ wrote:
> Pessoal segui a dica do Jimmy (Valeu Jimmy), e cheguei neste script:
>
> cat *www.log|awk -v A="" 'OFS=" " {A=$4} {print A, $1, $2, $3, $4, $5,
> $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20,
> $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34,
> $35}'|sort
> >> juventude.log
> E com a ajuda do MrBits (Valeu Bits), cheguei neste script: echo
> [04/Dec/2011:06:19:21| tr -d '[/:'| date +%s
>
> Como posso integrar os 2 scripts, substituindo o {A=$4} do script #1
> pelo script #2? Algo do tipo: {A=$(echo $4| tr -d '[/:'| date +%s)}
>
> Tentei fazer o exemplo acima, mas sempre dá erro, não consegui
> proteger o sub-shell.
Parece que você confundiu as variáveis e os mecanismos de atribuição do
awk com os do shell e, dentro do awk, para capturar a saída de um
comando shell, você precisaria usar o getline, assumindo que está usando
o gawk ou uma implementação que suporte esse tipo de recurso, do
contrário, precisaremos mudar a abordagem da solução.
Mantendo o seu raciocínio com awk, podemos simplificar o problema da
seguinte forma:
$ gawk '{"echo "$0"|tr -d '\''[/:'\''|date +%s" | getline t;
print t,$0 }' www.log |
sort|cut -d' ' -f2- > juventude.log
Podemos ainda eliminar o echo e o tr acima usando um expressão regular
para o FS do awk:
$ gawk -F'[ []' '{"date +%s<<<"$5 | getline t;
print t, $0}' www.log |
sort | cut -d ' ' -f2- > juventude.log
Você poderia fazer isso tudo em shell-script puro também, exemplo:
while IFS=$IFS'[' read -a F; do
t=$(date +%s <<< ${F[3]})
echo "$t ${F[@]}"
done < www.log | sort | cut -f2- > juventude.log
> Aguardo + ajuda da Lista. E todas as idéias são bem vindas.
>
> Abraço
[...]
Outras abordagens de solução dependeriam do tipo de problema que tem, se
os arquivos são muito muito maiores que a memória disponível, ou se são
menores, caso em que seria possível fazer tudo em memória e eliminar o
uso de alguns pipes.
[]'s
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
http://tecnoveneno.blogspot.com