acrescentando o registro de data e hora aos resultados de tail -f

4

Eu gostaria de ter um timestamp impresso na frente de cada linha que sai de um "tail -f outputfile", para que eu saiba quando cada linha é impressa. Algo como:

[...]
20110617_070222:results printed here
20110617_070312:results printed here
20110617_070412:results printed here
20110617_070513:results printed here
[...]

Alguma idéia?

    
por 719016 17.06.2011 / 08:04

3 respostas

5

Provavelmente não é mais curto que isso:

tail -f outputfile | xargs -IL date +"%Y%m%d_%H%M%S:L"

Note que usei o formato de data e hora sugerido por sua pergunta, mas você está livre para usar qualquer coisa suportada pelo comando date (a sintaxe de formato é suportada pelo BSD padrão e pela data GNU).

    
por 24.02.2017 / 08:09
6

Escreva um script simples para fazer isso. Aqui está um exemplo em perl:

#!/usr/bin/perl
while(<>) {
    print localtime . ": $_";
}

Para usar o script, basta enviar o resultado final por ele:

tail -f outputfile | ./prepend_timestamp.pl

Você também pode fazer isso em linha:

tail -f outputfile | perl -pe '$_ = localtime.": $_"'
    
por 17.06.2011 / 08:11
1

Com o awk :

tail -f infile | awk '{"date \"+%Y%m%d_%H%M%S\"" | getline now} {close("date")} {print now ": " $0}'
    
por 17.06.2011 / 08:28