[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Formatação de campo de um texto
From: |
Eliphas Levy Theodoro |
Subject: |
Re: [shell-script] Formatação de campo de um texto |
Date: |
Wed, 27 Apr 2005 13:34:45 -0300 (BRT) |
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 ':)
--
Eliphas
Armando Roque, @ 09:52:
> Oooppps, desculpe....
> Caractere separador: TAB
> Eliphas Levy Theodoro wrote:
>
>> Armando Roque, @ 08:50:
>>> No trecho a seguir, gostaria de formatar o campo 5 (data) para que eu
>>> possa incluir os registros no banco de dados.
>>>
>>> Vox DDR - Mato Grosso 6530279000 AV. BEIRA RIO (GVT:78015000)
>>> 1655 CUIABA Ligações Locais 20041228044907 000100
>>> 656234488 LOCAL 4 30%
>>> Ex.: 20041228072256 convertido para 2004-12-28 07:22:56
>> Isso é tudo uma linha só? Tem caractere de tabulação? Onde ficam as
>> separações de campos? ':)
[As partes desta mensagem que não continham texto foram removidas]