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