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

Re: [OF] Performance VI e expressoes regulares



Claudio Clemens wrote:

2003-09-19, 09:09 -0300, Julio Cesar de Magalhaes:
Pessoal eu tenho um arquivo de log com aproximadamente 7 milhoes de linhas como as que seguem abaixo:

"17908596" "23Aug2003" "23:59:58" "FireWall-1" "qfe2" "firewall" "Log" "Accept" "2967" "10.1.1.1" "servidor1" "udp" "10" "2967" "" ""

Estou internalizando esse log no postgres . Quando o arquivo é menor consigo usar as expressoes regulares no vi e colocar o arquivo no seguinte formato:

17908596;23Aug2003;23:59:58;FireWall-1;qfe2;firewall;Log;Accept;2967;10.1.1.1;servidor1;udp;10;2967; ; ;

O problema é que quando tento fazer a mesma coisa com esse arquivo de 7 milhoes de linhas não tenho resposta . Depois de 3 dias rodando quando dou um top o mesmo apresenta o processo do vi com STAT D .

Alguem saberia me ajudar com uma expressão regular mais eficiente ou mesmo alguma saída com o awk ou sed ?
segue minha expressão desastrosa:

vi -c '%s/" "/;/g' -c ':%s/..$/' -c '%s/^./' -c ':set fileformat=unix' -c ':wq' 2003-1708a2308.txt

O que você quer fazer com :%s/..$/

Apagar os 2 últimos caracteres de cada linha

e
%s/^./?

Apagar o Primeiro caracter de cada linha


Tenta com o sed. Acho que o vi tenta carregar o arquivo TODO na RAM, e o
sed processa linha por linha.

Até

Claudio
Consegui fazer o o perl ! Ficou infinitamente mais rápido, acho que o vi carrega o arquivo todo em RAM mesmo .

Mas valeu
Abraços
Júlio




Reply to: