Ajuda - Inserir caracter no meio do conteúdo [RESOLVIDO]

1. Ajuda - Inserir caracter no meio do conteúdo [RESOLVIDO]

David Silva
srdavidsilva

(usa Fedora)

Enviado em 07/08/2014 - 12:19h

Boa tarde Galera

Tenho um arquivo que possui números de celulares de clientes, porém, sem o nove na frente.
Atualmente é assim: DDDNUMERO

Preciso fazer com que fique DDD9NUMERO

Ou seja, contar dois caracteres e inserir o nove, linha a linha.

Estou tentando algumas coisas com o SED mas estou meio perdido.

Agradeço desde já!

Abraços


  


2. Re: Ajuda - Inserir caracter no meio do conteúdo [RESOLVIDO]

Leandro Nkz
leandro

(usa Arch Linux)

Enviado em 07/08/2014 - 12:38h

srdavidsilva escreveu:

Boa tarde Galera

Tenho um arquivo que possui números de celulares de clientes, porém, sem o nove na frente.
Atualmente é assim: DDDNUMERO

Preciso fazer com que fique DDD9NUMERO

Ou seja, contar dois caracteres e inserir o nove, linha a linha.

Estou tentando algumas coisas com o SED mas estou meio perdido.

Agradeço desde já!

Abraços


Resposta rápida (pode não ser a ideal, mas...):

Se for no formato DDDXXXXXXXX (DDD com três dígitos)

sed 's/\(...\)\(.*\)/\19\2/g' -i arquivo.txt

Onde:

\(...\) - Agrupa três caracteres (o DDD)
\(.*\) - Agrupa o restante dos números
\19\2 - Imprime o primeiro grupo (DDD), insere o 9 e imprime o segundo grupo
-i arquivo.txt - Modifica o arquivo.txt

Exemplo de uso:

01140404040
01120202020
01250505050
02010203040


Depois:

011940404040
011920202020
012950505050
020910203040



3. Re: Ajuda - Inserir caracter no meio do conteúdo [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 07/08/2014 - 13:01h

leandro escreveu:

srdavidsilva escreveu:

Boa tarde Galera

Tenho um arquivo que possui números de celulares de clientes, porém, sem o nove na frente.
Atualmente é assim: DDDNUMERO

Preciso fazer com que fique DDD9NUMERO

Ou seja, contar dois caracteres e inserir o nove, linha a linha.

Estou tentando algumas coisas com o SED mas estou meio perdido.

Agradeço desde já!

Abraços


Resposta rápida (pode não ser a ideal, mas...):

Se for no formato DDDXXXXXXXX (DDD com três dígitos)

sed 's/\(...\)\(.*\)/\19\2/g' -i arquivo.txt

Onde:

\(...\) - Agrupa três caracteres (o DDD)
\(.*\) - Agrupa o restante dos números
\19\2 - Imprime o primeiro grupo (DDD), insere o 9 e imprime o segundo grupo
-i arquivo.txt - Modifica o arquivo.txt

Exemplo de uso:

01140404040
01120202020
01250505050
02010203040


Depois:

011940404040
011920202020
012950505050
020910203040


Como o padrão no seu caso é DDDnúmero, onde DDD tem apenas dois dígitos, altere o comando que o Leandro te passou para
$ sed 's/\(..\)\(.*\)/\19\2/g' -i arquivo.txt 

Explicando: cada pontinho aí do primeiro bloquinho do comando indica um e apenas um caractere. Por isso você só vai usar dois pontos, e não três.


4. Tudo certo!

David Silva
srdavidsilva

(usa Fedora)

Enviado em 09/08/2014 - 18:16h

Galera, obrigado!
Entendi perfeitamente o esquema, obrigado mesmo!

Abraços!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts