命令找到时差

时间:2013-07-22 07:49:37

标签: linux date time command

我有一个日志,它同时被一个或多个进程转储。 有时,由于CPU过载和上下文切换,将记录到此文件 延迟。我想找到每一行之间的时差并在每一行之前打印它?

日志示例:

07/18 16:20:29886564 Pid= 2998,Tid= 3036,  XXXXX.c:  335:XXXXX:### xxxxxxxxxxxxxxxxxx ### 
07/18 16:20:29886642 Pid= 2998,Tid= 3036,  XXXXX.c:  484:XXXXX:### yyyyyyyyyyyyyyy() 
07/18 16:20:29886880 Pid= 2998,Tid= 3036,  XXXXX.c:  488:XXXXX:>>>yyyyyyyyyyyyy() 
07/18 16:20:29887002 Pid= 2998,Tid= 3036,  XXXXX.c:  494:XXXXX:>>>OK: zzzzzzzzzzzzzzz()

我想这可能是'awk'。但是,我对linux命令非常糟糕。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您可以尝试以下awk命令。我已经对它进行了评论,因此您可以了解它是如何工作的:

awk '{
  # split the time field
  split($2,arr,":"); 

  # convert hours and mins into seconds and compute total
  curr=arr[3]+arr[2]*60+arr[1]*60*60;

  # set previous value for the first line
  if(prev == 0) prev=curr;

  # print out the difference between current and previous totals
  print curr-prev,$0;

  # set previous to current
  prev=curr;
}' file