shell-script-pt
[Top][All Lists]
Advanced

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

Re: [shell-script] Filtragem com sed


From: Roberto Alves
Subject: Re: [shell-script] Filtragem com sed
Date: Thu, 25 Jan 2007 17:18:01 +0000

Pessoal, agradeço a todos que deram dicas.
Tiago, eu fiz algo parecido com sua sugestao mas esqueci de escapar os
colchetes no sed.
Deve ter sido esse o meu erro.

Obrigado.

Roberto



On 1/25/07, Tiago Barcellos Peczenyj <address@hidden> wrote:
>
>   Veja este exemplo, roberto:
>
> $ cat arquivo
>
> 2GB33 BA,2024500700,01/01/1922,30/06/1922,0,3
>
> $ sed 's/^[^,]*,[^,]\{5\}/&,/' arquivo
>
> 2GB33 BA,20245,00700,01/01/1922,30/06/1922,0,3
>
> Bom, como eu fiz ? perceba a expressão regular:
>
> ^ : começo de linha
> [^,]* : todos os caracteres MENOS a virgula
> , : virgula litera
> [^,]\{5\} : um conjunto de 5 caracteres não composto de virgula.
>
> assim, eu encontro uma parte da expressão. preciso colocar um virgula
> depois, o que e faço?
>
> - mando substituir o que eu encontrei por ela mesma acrescentado de ,
>
> & -> & significa a parte que foi encontrada pelo s/.../
>
> Existem outras formas de fazer a mesma coisa, como em AWK
>
> awk -F \, '{OFS="," ; sub(/...../,"&,",$2); print $0}' arquivo >
> arquivo_novo
>
> []´s Tiago
>
> On 1/25/07, Roberto Alves <address@hidden <ralvesjr%40gmail.com>>
> wrote:
> >
> > Pessoal,
> > acho que isso deve ser simples pra voces.
> > Eu tentei mas nao consegui separar os cinco primeiros digitos da
> > segunda coluna e transforma-los em uma coluna.
> > Vou tentar explicar melhor:
> >
> > No ex do arquivo abaixo:
> >
> > 2GB33 BA,2024500700,01/01/1922,30/06/1922,0,3
> > 2B048 BA,2774500700,01/01/1925,30/12/1925,0,3
> > 20265 BA,2370000500,17/07/1937,01/09/1937,0,4
> >
> > Eu quero dividir a segunda coluna em duas pegando os cinco primeiros
> > digitos dela fazendo ser a segunda coluna e o restante sendo a
> > terceira coluna.
> > O restante da linha fica igual.
> >
> > A primeira linha mudaria disso:
> > 2GB33 BA,2024500700,01/01/1922,30/06/1922,0,3
> >
> > Para isso:
> > 2GB33 BA,20245,00700,01/01/1922,30/06/1922,0,3
> >
> > Viram? O 20245 passa a ser separado por uma virgula virando a segunda
> > coluna.
> >
> > Já tentei tanta coisa que nem vou colocar minhas ideias malucas aqui.
> > Agradeço sugestões antecipadamente.
> > abraços a todos,
> > Roberto
> >
> >
>
> --
> Tiago B Peczenyj
> Linux User #405772
>
> # cd /pub
> # more beer
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]