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"
signature.asc
Description: Digital signature

