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. :-)

Responder a