Pular para o conteúdo

sed formatando CPF, CNPJ e datas

Dica publicada em Shell Script / Miscelânea
Carlos Affonso Henriques. capitainkurn
Hits: 11.774 Categoria: Shell Script Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Cache de conteúdo dinâmico com o Squid

Compilando um novo kernel herdando as configurações do antigo

Otimizando o desempenho do Squid

Criando e lendo QR-Code pelo shell no CentOS 6

Liberando Rádio UOL: Duas soluções

IP em modo texto (modem router)

Renomeando extensões de centenas de arquivos de uma só vez

Exibindo mensagens ao efetuar login

ShellDocTemplate - Template para documentação de códigos em Shell Script

Norton Ghost - backup de partições rápido

#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

Entre na sua conta para comentar.