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: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Filtragem com sed
Date: Thu, 25 Jan 2007 11:54:08 -0200

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> 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]



reply via email to

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