Como editar arquivos no local ao executar a operação nos valores correspondentes ao padrão pesquisado?

4

Dados arquivos de lista contendo texto aleatório e muitos datetimes em formato ISO (por exemplo, "2012-07-02T10: 47: 24 + 02: 00"), como posso encontrar todos esses datetimes e adicionar 2 horas a cada 1 ? Idealmente, uma solução que leva em conta o fato de que um dia é de 24 horas seria ótimo (por exemplo, "02T23: 15 + 2" deveria resultar em "03T01: 15" e não "02T25: 15") mas no meu caso isso não é grande negócio. E vamos ignorar as possíveis conseqüências do fuso horário e considerar isso como uma simples operação matemática.

Eu já sei como fazer isso em Python, por exemplo, lendo todos os arquivos linha por linha e substituindo a linha quando os datetimes são encontrados, mas eu me pergunto se há uma maneira mais direta de fazer isso, com awk ou sed talvez? / p>

Obrigado!

    
por piouk 22.03.2013 / 17:47

1 resposta

5

É mais um trabalho para perl como:

perl -MTime::Piece -pi -e 's/\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d/
(Time::Piece->strptime($&,"%Y-%m-%dT%T")+2*3600)->datetime/ge' file1 file2...
    
por 22.03.2013 / 21:27