Como substituir uma string de data personalizada em um arquivo de texto

1

Eu examinei vários tutoriais e algumas postagens do StackOverflow, mas não vi exemplos usando sed ou awk que usam datas. Eu tenho um arquivo de texto que contém isso como a primeira linha, eu preciso substituir a data com a data e hora atual via script; Qual é a maneira mais fácil de fazer isso no Linux?

TS: 2014-03-31 13:56:01

Eu posso usar qualquer ferramenta disponível em uma instalação padrão do Ubuntu, como sed ou awk.

    
por Paul Gregoire 02.04.2014 / 21:25

2 respostas

4

A abordagem simplista seria usar apenas sed e substituir a cadeia pela correta. Então, se a hora atual for 2014-04-02 21:34:13 você poderia simplesmente executar

sed 's/2014-03-31 13:56:01/2014-04-02 21:34:13/' file

Como, presumivelmente, você deseja fazer isso dinamicamente, é possível transmitir sed o resultado da chamada date relevante:

sed "s/2014-03-31 13:56:01/$(date '+%F %T')/" file

Observe que as aspas duplas ( " ) em torno do comando sed são necessárias para que o comando date seja executado.

    
por 02.04.2014 / 21:36
3

Para substituir a primeira linha pelo carimbo de data / hora esperado, use

sed "1c TS: $(date '+%F %T')"

O 1 no início significa a primeira linha, c significa "substituir a linha pela seguinte string". $(...) insere a saída do comando fornecido, consulte man date para detalhes.

    
por 02.04.2014 / 21:37

Tags