LINUX.ORG.RU

утилита, добавляющая время в начало каждой строки

 


0

1

утилита, читающая stdin, добавляющая в начало каждой строки текущее время или время с начала запуска программы или текущее минус заданное, и печатающая это на stdout.

перед тем, как написать самому, решил спросить, может существует сабж в природе?


Ответ на: комментарий от yoghurt
dm@debian:~$ awk '{"date" | getline d; print d, $0}'                 
how
Пт ноя 21 00:17:53 MSK 2014 how
are
Пт ноя 21 00:17:53 MSK 2014 are
you
Пт ноя 21 00:17:53 MSK 2014 you
doing
Пт ноя 21 00:17:53 MSK 2014 doing
yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt
$ python3 -c '
> import sys
> from datetime import datetime
> for x in sys.stdin:
>   sys.stdout.write("%s: %s" % (datetime.now(), x))
> '
how
2014-11-21 00:47:59.428359: how
are
2014-11-21 00:48:01.143855: are
you
2014-11-21 00:48:02.886353: you
doing
2014-11-21 00:48:04.294530: doing

кто продолжит эстафету?

anonymous
()

Журнал хочешь устроить? Если вывода немного можно через logger в системный писать.

ziemin ★★
()

ts из moreutils (http://joeyh.name/code/moreutils/)

$ seq 10 | ts '%.s'
1416521686.012355 1
1416521686.012453 2
1416521686.012493 3
1416521686.012531 4
1416521686.012568 5
1416521686.012605 6
1416521686.012641 7
1416521686.012677 8
1416521686.012711 9
1416521686.012745 10

i-rinat ★★★★★
()
Ответ на: комментарий от yoghurt

вот и пришла пора изучить awk, и может быть sed за одно

спс

FeelUs
() автор топика
Ответ на: комментарий от bl

в awk есть strftime(«%string %time %format»)

ЕМНИП только в гнутом

yoghurt ★★★★★
()
dron@gnu:~$ cat da.c ; gcc -std=c99 da.c ; ./a.out 
#include <stdio.h>
#include <time.h>
#include <assert.h>
#include <string.h>
#define BUFFSIZE 2048


    void wwd( char * path_to_file, char * message)
    {
         time_t rawtime;
         struct tm * timeinfo;

         time(&rawtime);
         timeinfo=localtime(&rawtime);
         char data[24];
         strcpy(data,asctime(timeinfo));
         data[24]='\0';

         printf("[%s]=> %s\n",data,message);

         FILE * stream=fopen(path_to_file,"a");
         assert(stream);
         fprintf(stream, "[%s]=> %s\n",data,message);
         fclose(stream);   
    }

int main(int argc, char *argv[])
{
    char  log[]="/tmp/my.log";

    wwd(log,"how");
    wwd(log,"are");
    wwd(log,"you");
    wwd(log,"doing");

    char buffer[BUFFSIZE];

    while(1)
    {
       fgets(buffer,sizeof(buffer),stdin);
       wwd(log,buffer);

       for (int i = 0; i != BUFFSIZE; ++i)
       {
           buffer[i]='\0';
       };

    };


    return 0;
}
[Fri Nov 21 02:57:19 2014]=> how
[Fri Nov 21 02:57:19 2014]=> are
[Fri Nov 21 02:57:19 2014]=> you
[Fri Nov 21 02:57:19 2014]=> doing
how
[Fri Nov 21 02:57:23 2014]=> how

are
[Fri Nov 21 02:57:26 2014]=> are

you
[Fri Nov 21 02:57:30 2014]=> you

doing
[Fri Nov 21 02:57:36 2014]=> doing

?
[Fri Nov 21 02:57:45 2014]=> ?

^C
dron@gnu:~$ 

Dron ★★★★★
()
Ответ на: комментарий от anonymous

вносите эдика с царём

Как бы потом и выносить не пришлось - здоровьеце-то у батюшки не железное, на всех не хватит!

anonymous
()
while read s; do echo ($date) $s; done
Deleted
()

А почему бы тебе PS1 не покурить?

minakov ★★★★★
()
Ответ на: комментарий от anonymous
$ echo  "test"  |sed  'h;s/.*/date/e;G;s/\n/ /'
Пт ноя 21 06:19:22 MSK 2014 test
emulek
()
Ответ на: комментарий от anonymous

А в этом случае дата разве не одна и та же будет выводиться для каждой строки?

yoghurt ★★★★★
()
awk '{"date" | getline d; print d, $0}'
sed "s/^/$(date) /"

- здесь одно и то же время выводиться

а приведите пример с strftime(«%string %time %format»)

FeelUs
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.