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/..$/
e
%s/^./?

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

Até

Claudio

-- 
+- .''`. ---| Dipl.-Inf. Univ. Claudio Clemens |------| Sid |---------+
| : :' :       asturio at gmx.net        GNU/Linux User #79942        |
| `. `'                Now at TU-München | Informatik VI              |
|   `-             "YE GODS, I HAVE FEET??!" <- Userfriendly          |
Boss spelled backwards is "double-SOB"

Attachment: signature.asc
Description: Digital signature

Responder a