如何使用grep或awk获取日志中2次读取的时间差
How to use grep or awk to get the time difference between 2 reads in the log
您好,我主要想知道交易之间的时差。下面是一个例子:
1000 mem_rd
1100 mem_wr
1200 mem_rd
1300 mem_wr
1500 mem_rd
1650 mem_rd
第一列是时间,第二列是交易类型。我只想查看 mem_rd 和使用任何命令行代码的 2 个事务之间的时间差。以下是预期的输出:
0 mem_rd
200 mem_rd
300 mem_rd
150 mem_rd
这是一个 one-line 解决方案:
cat file.txt | awk 'BEGIN {t0=0}; /mem_rd/ {t1=; if(t0==0) t0=t1; printf("%-3d %s\n", t1-t0, ); t0=t1}'
或者同样的东西,但是写在脚本文件中以使其更具可读性:
$ cat script.awk
BEGIN {t0=0}
/mem_rd/ {
t1=;
if(t0==0)
t0=t1;
printf("%-3d %s\n", t1-t0, );
t0=t1}
$ awk -f script.awk file.txt
0 mem_rd
200 mem_rd
300 mem_rd
150 mem_rd
您好,我主要想知道交易之间的时差。下面是一个例子:
1000 mem_rd
1100 mem_wr
1200 mem_rd
1300 mem_wr
1500 mem_rd
1650 mem_rd
第一列是时间,第二列是交易类型。我只想查看 mem_rd 和使用任何命令行代码的 2 个事务之间的时间差。以下是预期的输出:
0 mem_rd
200 mem_rd
300 mem_rd
150 mem_rd
这是一个 one-line 解决方案:
cat file.txt | awk 'BEGIN {t0=0}; /mem_rd/ {t1=; if(t0==0) t0=t1; printf("%-3d %s\n", t1-t0, ); t0=t1}'
或者同样的东西,但是写在脚本文件中以使其更具可读性:
$ cat script.awk
BEGIN {t0=0}
/mem_rd/ {
t1=;
if(t0==0)
t0=t1;
printf("%-3d %s\n", t1-t0, );
t0=t1}
$ awk -f script.awk file.txt
0 mem_rd
200 mem_rd
300 mem_rd
150 mem_rd