o comando
sed 's/\([0-9]\{1,4\}\)0\(.*C.*\)/\13\2/' 219060.txt

equivale à

sed 's/padrão_a_encontrar/valor_a_substituir' arquivo

ou seja, toda a ocorrencia do padrão_a_encontrar é substituido pelo outro valor

A expressão : \([0-9]\{1,4\}\)0\(.*C.*\)

significa o seguinte:
\(padrão1\)0\(padrão2\)

vc tem 1 GRUPO, o caracter 0 e outro GRUPO. o grupo é uma entidade de
expressões regulares que 'junta' expressões para usar - nesse caso -
retrovisores. apenas isso.

[0-9]\{1,4\} é um conjunto de numeros entre 1 e 4 digitos - no seu
caso eu acho que deveria ser apenas [0-9]{3}

.*C.* - casa com qq coisa que tenha um C no meio

logo:
sed 's/\([0-9]\{1,4\}\)0\(.*C.*\)/\13\2/' 219060.txt

vai casar com qq coisa q tenha 3 números quaisquer, um 0 na quarta
posição e um monte de coisa q tenha um C

agora vem a substituição. pro \1 vc substitui o primeiro grupo
encontrado, o \2 substitui o segundo. assim \13\2 significa -
literalmente - substituir o primeiro grupo, por um 3 e depois colocar
o resto da string

também funcionaria assim:

sed 's/\([0-9]\{3\}\)0\([0-9]+C\)/\13\2/'

se vc só quer trocar o quarto numero de 0 por 3 independente do que
segue - podes fazer assim:

sed 's/\([0-9]\{3\}\)0/\13/'

para ficar mais 'logico':

$ echo '14505230938800941627220060730004910000000024810000000150008512C'
| sed 's/\([0-9]\{3\}\)0/\1_3_/'
145_3_5230938800941627220060730004910000000024810000000150008512C

[]'s
On 7/6/06, Rafael Sanches <[EMAIL PROTECTED]> wrote:
> Galera eu tinha feito algumas alteracoes mais mesmo assim nao funcionou, 
> abaixo parte do codigo de um arquivo que preciso fazer uma coisa mt facil
> seria mudar o 4º digito para 3 ou seja muda de 0 para 3.
>
> 14505230938800941627220060730004910000000024810000000150008512C
> 14505248938814460158920060730004920000000031280000000150008512C
> 14505234611810038825120060730004930000000032430000000150008512C
> 14505724472800072098020060730004940000000035680000000150008512C
> 14505731002800962258120060730004950000000025650000000600008512C
> 14505729837814945544020060730004960000000037640000000150008512C
> 14505732259800630209820060730004970000000031970000000150008512C
>
> abaixo a exucao que fiz, sinceramente nao sou nenhum expert, e nao intendi 
> tao bem tdos proxedimentos
>
> aladin:/var/www# sed 's/\([0-9]\{1,4\}\)0\(.*C.*\)/\13\2/' 219060.txt
>
> aceitaria qualquer tipo de ajuda
>
>   ----- Original Message -----
>   From: Reinaldo Marques de Lima
>   To: shell-script@yahoogrupos.com.br
>   Sent: Tuesday, June 06, 2006 11:24 AM
>   Subject: [shell-script] Re: formatacao de um arquivo
>
>
>   Caramba, ta dificil aki hj...heheheh
>
>   corrigindo:
>
>   sed 's/\([0-9]\{1,4\}\)0\(.*C.*\)/\13\2/'
>
>   Desculpem a lista pelos emails errados
>
>   []'s
>
>
>   --- Em shell-script@yahoogrupos.com.br, "Éder Paulo Vendrasco"
>   <[EMAIL PROTECTED]> escreveu
>   >
>   > Para não correr risco de modificar a 1a e a última linha, poderia fazer;
>   >
>   > sed '2,'$nl's/\([1-9]\{1,4\}\)0\(.*\)/\13\2/' arquivo.txt
>   >
>   > sendo $nl o número de linhas -1 do arquivo.txt, que poderia ser obtido
>   > assim;
>   >
>   > nl=`echo $(wc -l teste.txt | awk '{print $1}')-1 | bc`
>   >
>   > Até,
>   > Éder.
>   >
>   > On 6/6/06, Reinaldo Marques de Lima <[EMAIL PROTECTED]> wrote:
>   > >
>   > >
>   > > Amigo Rafael...veja se isso te serve:
>   > >
>   > > sed 's/\([0-9]\{1,4\}\)0\(.*\)/\13\2/'
>   > >
>   > >
>   > >
>   > > --- Em shell-script@yahoogrupos.com.br, "Rafael Sanches" <[EMAIL 
> PROTECTED]>
>   > > escreveu
>   > > >
>   > > > Pessoal eis a minha primeira duvida,
>   > > >
>   > > > Todo mes eu recebo um arquivo da uma operadora regional que vem da
>   > > seguinte maneira
>   > > >
>   > > > 02192199032200402031  (inicio do arquivo)
>   > >
>   > > > 14505244536800068946220040229000010000000021040000000150008512C
>   > > (telefone1)
>   > > > 14505776443800066463020040229000020000000027460000000150008512C
>   > > (telefone2)
>   > > > 14505234043800620557220040229000030000000000520000000150008512C
>   > > (telefone3)
>   > > > 14505241465800068627720040229000040000000026970000000150008512C
>   > > (telefone4)
>   > > > 9000379000000000976700  (final do arquivo)
>   > > >
>   > > > na verdade oq eu preciso é de substituir 4ª posicao de caracter que
>   > > sempre é 0 pelo numero 3 , lembro aos colegas que ele tem que manter
>   > > os cabeçados ou seja o inicio e final .
>   > > >
>   > > > No caso ficaria assim.....
>   > > >
>   > > > 14535244536800068946220040229000010000000021040000000150008512C
>   > > (telefone1)
>   > > > 14535776443800066463020040229000020000000027460000000150008512C
>   > > (telefone2)
>   > > >
>   > > > Conto com a colaboração de todos os colegas.
>   > > >
>   > > >
>   > > > Compubras Telecom
>   > > > Suporte Técnico
>   > > > Rafael Sanches
>   > > > +55 (45) 35725000
>   > > > Linux User #314543
>   > > >
>   > > > [As partes desta mensagem que não continham texto foram removidas]
>   > > >
>   > >
>   > >
>   > >
>   > >
>   > >
>   > >
>   > >
>   >
>   >
>   > [As partes desta mensagem que não continham texto foram removidas]
>   >
>
>
>
>
>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>


-- 
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: [EMAIL PROTECTED]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a