sed formatando CPF, CNPJ e datas

Publicado por Carlos Affonso Henriques. em 30/03/2011

[ Hits: 10.684 ]

 


sed formatando CPF, CNPJ e datas



Em formulários CGI e programas em shell que tenham entradas manuais de CPF, CNPJ e datas é um tanto chato e passível de erros digitá-los com seus formatos. O sed aqui se mostra muito útil para formatá-los.

Para formatar CPF:

echo 99988877755 | sed -e 's!\.!!g;s!\(...\)!\1.!1;s!\ (.\)!\1.!7;s!\(.\)!\1-!11' A saída deste comendo será:

999.888.777-55

Para formatar CNPJ com o sed faça o seguinte.

CNPJ 18 caracteres (antigo):

echo 99888777000155 | sed -e 's!\.!!g;s!\(..\)!\1.!1;s!\ (.\)!\1.!6;s!\(.\)!\1/!10;s!\(.\)!\1-!15'

A saída será: 99.888.777/0001-55

CNPJ 19 caracteres (novo):

echo 199888777000155 | sed -e 's!\.!!g;s!\(.\)!\1.!3;s!\ (.\)!\1.!7;s!\(.\)!\1/!11;s!\(.\)!\1-!16'

A saída será: 199.888.777/0001-55

Muito semelhante ao CPF e CNPJ esta linha de comando o sed formata datas igualmente para 6 ou 8 dígitos:

echo 10102011 | sed -e 's!\.!!g;s!\(.\)!\1\/!2;s!\ (.\)!\1\/!5;s!$!!'

A saída será: 10/10/2011

echo 101011 | sed -e 's!\.!!g;s!\(.\)!\1\/!2;s!\ (.\)!\1\/!5;s!$!!'

A saída será: 10/10/11

Bom trabalho.

Outras dicas deste autor

Arch Linux - erro "ssh_exchange_identification: read: Connection reset by peer" [RESOLVIDO]

Executando comandos do Shell Bash pelo Python

Atribuindo número de série da MikroTik Routerboard ao hostname

Comando sed para formatar datas

IP estático no Amazon Linux

Leitura recomendada

Script para Ripar um cd inteiro

gxmessage :: shell script incrementado

CheckDNS - Verificador de DNS

if/then/elif/else - Escrevendo de outra maneira em bash

LibreOffice - Acessando arquivos recentes pelo Unity Launcher

  

Comentários
[1] Comentário enviado por tiekookeit em 31/03/2011 - 09:55h

Eu faria, assim:

echo 99988877755|sed 's:\(...\)\(...\)\(...\)\(.*\):\1.\2.\3-\4:'

echo 199888777000155 |sed 's:\(...\)\(...\)\(...\)\(....\)\(.*\):\1.\2.\3/\4-\5:'

echo 10102011 | sed 's:\(..\)\(..\)\(.*\):\1/\2/\3:'

echo 101011 | sed 's:\(..\)\(..\)\(.*\):\1/\2/\3:'

[2] Comentário enviado por tiekookeit em 31/03/2011 - 09:58h

observação, com tanto faz o separador, eu desaconselho a utilizacao da ! como separador, por no caso de utilização de " ao inves de ', o comando vai abortar eu utilizo em geral o | ou : ou \

[3] Comentário enviado por uberalles em 31/03/2011 - 10:48h

bacaninha! quebra um galhão essas paradas que são fáceis de fazer (entre aspas), mas voce empaca num posicionamento correto de contra-barra



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts