Em Quarta, 02 de Julho de 2003 16:19, linux escreveu:
> Tenho um arquivo com o formato + ou - assim..
>
> 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,a,b,c,d,e,f,g,h,i,j,k
>,l,m,n,
> o,p,r,s,t,u,I,II,III,IV,V,VI,VII,VII,IX,X,XI,XII,XII,XIV,XV,XVI,XVII,
>XVII,XI X,XX
>
> e por ai vai... ou seja... a cada 20 campos delimitados por "," eu
> tenho um registro... mas nao tenho CR LF (0D0A) em nenhum momento pra
> separar cada registro...
Ol�,
Ufa! Passei um temp�o quebrando cabe�a em como fazer o sed funcionar
para esta tarefa. Cheguei a pensar que tinha um bug no sed, ou algo do
tipo. Depois notei que faltava um singelo "18" no arquivo exemplo,
fazendo com que o primeiro registro tivesse 19 caracteres e o restante
dos registros ficassem bagun�ados. A� vai o comando:
sed 's/\([^,]*,\)\{20\}/&\n/g' arquivo.txt | sed 's/,$//g' \
> arquivo_novo.txt
O segundo sed serve apenas para remover as v�rgulas do final de cada
linha. As newlines criadas ser�o "LF" (padr�o no Unix).
O esfor�o valeu como desafio ;-)
mais informa��es: man sed; info sed
--
Anderson Lizardo
_______________________________________________________________________
Yahoo! Mail
Mais espa�o, mais seguran�a e gratuito: caixa postal de 6MB, antiv�rus, prote��o
contra spam.
http://br.mail.yahoo.com/
---------------------------------------------------------------------------
Esta lista � patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utiliza��o da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html