[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Formatar CPFs com ER no SED?
From: |
Flavio Junior |
Subject: |
Re: [shell-script] Formatar CPFs com ER no SED? |
Date: |
Wed, 25 Feb 2009 20:03:14 -0300 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Uma forma:
[root@pinky ~]# cat x
11111111111
1111111111
11111111111
[root@pinky ~]# sed -r -e
'/^[0-9]{10}$/s/^/0/;s/^([0-9]{3})([0-9]{3})([0-9]{3})([0-9]{2})/\1.\2.\3-\4/'
x
111.111.111-11
011.111.111-11
111.111.111-11
conteudo mais "legivel" (merda de gmail..): http://rafb.net/p/IoHrcW35.html
- --
Flávio do Carmo Júnior aka waKKu
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: http://getfiregpg.org
iEYEARECAAYFAkmlzjwACgkQgyuXjr6dyksNQwCdHis2gWXCcoh6TeRqcC37c64U
wm0AoI9h0LD5V0+W+aKQVST0Hiuol/4c
=zBkO
-----END PGP SIGNATURE-----
2009/2/25 Leandro Santiago <address@hidden>:
> 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. :-)
>
>