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

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

Re: [shell-script] Formatação de campo de um texto


From: Armando Roque
Subject: Re: [shell-script] Formatação de campo de um texto
Date: Wed, 27 Apr 2005 13:02:54 -0400
User-agent: Mozilla Thunderbird 1.0 (X11/20041206)

Obrigado Eliphas,

Pensei que existisse algo mais "light", algo como um único comando e faz o arquivo inteiro, pq estou usando PostgreSQL e iria usar o COPY pra incluir (facilidade do banco). Caso seja apenas linha-a-linha acredito que seja melhor partir pra alguma linguagem (php, java, python ou similar).

Mas se alguêm indica algo mais "light" fico imensamente grato.



Eliphas Levy Theodoro wrote:

Sem tempo pra pensar bonitinho, vai o método força bruta:

$ cat -T lixo
Vox DDR - Mato Grosso^I6530279000^IAV. BEIRA RIO (GVT:78015000) 1655 
CUIABA^ILigações Locais^I20041228044907^I000100^I656234488^ILOCAL^I4^I30%

$ sed 
's/\(\([^TAB]*TAB\)\{4\}\)\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)\(TAB.*\)/\1\3-\4-\5
 \6:\7:\8\9/' lixo | cat -T

Vox DDR - Mato Grosso^I6530279000^IAV. BEIRA RIO (GVT:78015000) 1655 
CUIABA^ILigações Locais^I2004.12.28 04:49:07^I000100^I656234488^ILOCAL^I4^I30%

Separando o sed em várias linhas pra ficar mais fácil pra entender
essa miséria:

's/
\(\([^TAB]*TAB\)\{4\}\)\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)\(TAB.*\)
/
\1\3-\4-\5 \6:\7:\8\9
/'

Primeiros campos são o buffer \1;
O buffer \2 está dentro do \1, usado pra juntar o campo e o tab;
Os buffers de \3 a \8 são a data;
O buffer \9 é "o resto".

Tudo quanto é TAB na linha do sed vc troca pelo TAB literal.

Que feio! Talvez alguém bote uma mais fácil ':)


--

Armando Roque Ferreira Pinto
Analista de sistemas
SELCO Inst. Elet. e Const. LTDA



reply via email to

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