4

Мне бы хотелось, чтобы перед каждой строкой, выходящей из «выходного файла tail -f», была напечатана временная метка, чтобы я знал, когда печатается каждая строка. Что-то вроде:

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

Есть идеи?

3 ответа3

6

Это, вероятно, не становится короче, чем это:

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

Обратите внимание, что я использовал формат отметки времени, предложенный вашим вопросом, но вы можете использовать все, что поддерживается командой date (синтаксис формата поддерживается стандартными BSD и GNU date).

6

Напишите простой скрипт для этого. Вот пример в Perl:

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

Чтобы использовать скрипт, просто передайте через него свой хвостовой вывод:

tail -f outputfile | ./prepend_timestamp.pl

Вы также можете сделать это в строке:

tail -f outputfile | perl -pe '$_ = localtime.": $_"'
1

С awk:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .