shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Formatar CPFs com ER no SED?


From: Leandro Santiago
Subject: Formatar CPFs com ER no SED?
Date: Wed, 25 Feb 2009 18:56:29 -0300
User-agent: Thunderbird 2.0.0.19 (X11/20081209)

Olá shelleiros de plantão.

Gostaria de tirar uma dúvida: é possível fazer via sed substituições num texto para deixá-lo "formatado"?

Por exemplo, tenho um arquivo onde cada linha contém somente um CPF. Neste arquivo há também linhas vazias que devem ser mantidas na saída.

Do tipo:

11111111111
1111111111

11111111111

Onde algumas linhas tem ou não o primeiro caractere (o texto é retirado de uma planilha e por alguma razão o editor de planilhas remove o primeiro caractere quando este é zero :-)).

Eu resolvi meu problema com o seguinte script, que é cheio de bashismos (eu sempre escrevo scripts para o bash):

#!/bin/bash

TMPFILE=$(mktemp)

while read linha
do
   # se falta um zero no início, insere
   if ((${#linha}==10)); then linha=0${linha}; fi

   # aqui escreve no formato CPF: 000.000.000-00
   echo ${linha:0:3}.${linha:3:3}.${linha:6:3}-${linha:10:1};

done < "$1" | sed 's/\.\.-$//g' > $TMPFILE

mv -f $TMPFILE "$1"

Este script funciona muito bem, mas queria fazê-lo rodar todo usando só sed (há um sed no final, mas é só para consertar a gambiarra :-)).

Isto é possível? Fazer formatações em strings ou mesmo substituições do tipo "a primeira palavra vira um 'oi', a terceira um 'ai'" e assim em diante, mantendo as palavras que estão entre as que serão substituídas? Isso seria muito interessante para mim principalmente para fazer modificações diretas em planilhas (CSV).

Me desculpem se o assunto já foi abordado, mas não achei no histórico da lista.

Abraços e já vou indo já que o Workgrave está gritando que eu estou a tempo demais na frente do computador. Aí em vez de E.R. vou é ter L.E.R. :-)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]