'sed' problema de formatação de data

0

Estou obtendo um arquivo do banco de dados usando o shell script. Os dados aparecem abaixo após a execução do shell script. Esse é um arquivo de dados separado por pipe.

4676004||2017-09-2900:00:00|13222|0|XYZ|TTTTT||1855467|S|14671 

Depois de gerar o arquivo usando o spool, abaixo está o comando que estou executando para formatar os dados.

sed -i -E 's/[[:blank:]]+(||$)//g' Test.txt.  

mas o problema é date data

2017-09-2900:00:00 , preciso disso como 2017-09-29 00:00:00

Eu preciso de espaço entre data e hora. Como isso pode ser feito?

    
por unknown 02.10.2017 / 19:48

2 respostas

3

Apenas faça.

sed 's/....-..-../& /' infile

Supondo que há sempre um padrão pode corresponder ao formato xxxx-xx-xx .

Ou, no início, no seu SQL, você precisa dizer ao comando substr in select para fazer esse trabalho para você.

select ... '|' || substr(mydate,1,10) || subtsr(mydate,11,8) || '|'  ...
    
por 02.10.2017 / 20:09
2
$ sed -E 's/([0-9]{2})([0-9]{2}):/ :/' file
4676004||2017-09-29 00:00:00|13222|0|XYZ|TTTTT||1855467|S|14671

Isso pressupõe que o único local na linha de entrada onde quatro dígitos ocorrem antes de um : esteja na cadeia de data. A substituição sed separa os dois grupos de dois dígitos com um espaço.

    
por 02.10.2017 / 20:07