我之前有段时间经常要分析很大的csv格式的日志文件,几G甚至十几G。csv的第一个字段是日期加上精确到微秒的时间。这个时间是严格递增的。
一般来说,只需要查一小段时间范围(一般是几秒)内的日志。但由于文件非常大,不方便直接排查,所以需要先用grep把对应时间段的日志过滤到一个临时文件中。然后再分析这个临时文件。
这个grep会比较久。而且使用临时文件也不方便。
由于时间是严格递增的,所以其实可以通过二分查找的方式来过滤,来替代通用的grep。这样应该就快很多,甚至就不需要临时文件了。但要么是当时没想起来,要么是没动力去写。
最近在想,为了练习rust,想写个CLI程序。就想到这个。但基于多年的经验,就先网上搜索了下有没有类似的工具。果然,真的找到了。
Look!
这甚至是一个非常古老非常基础的命令。其man手册里说:
A look utility appeared in Version 7 AT&T UNIX.
查了下,是1979年的。
试用了下,非常好用。非常快。完全不需要临时文件了。
这个命令的功能非常简单。我之前想的是,需要支持指定列,支持数字格式排序,支持指定范围。但look都没有。不过这也可以满足95%的情况了。简单可依赖。