Linux 尾巴 + grep + less

Linux tail + grep + less

我想查看我网站访问日志的实时输出。我只想查看某些类型的条目,在这种情况下,匹配“.php”的条目。

这工作正常,但换行到下一行,我不希望这样:

tail -f access-log | fgrep ".php" --line-buffered

这可以很好地避免换行,但未过滤:

less +F -S access-log

我更喜欢查看没有换行到下一行的文件,因为这样更容易看到输出中的结构,这就是我想要的 less -S

这种方法可行,但 "cursor" 不会停留在文件底部,我输入的任何命令都会使 less 挂起(按 "SHIFT + f" 停留在随着流的底部):

tail -f access-log | fgrep ".php" --line-buffered | less -S

但这根本行不通:

tail -f access-log | fgrep ".php" --line-buffered | less +F -S

那么,有没有办法实现我想要的?

我也采用 outside-the-box 解决方案,也许用 sed 切割,这样每行都不会比我的屏幕长?

考虑使用 watch 命令:

watch -n1 tail access-log | fgrep ".php" --line-buffered

与bash我建议:

tail -f access-log | fgrep ".php" --line-buffered | cut -c 1-$COLUMNS

我已经为我的案例使用了可接受的答案,但我想如果我真的想少用一些,因为我喜欢它还提供的其他功能,我可以这样做:

tail -f access-log | fgrep ".php" --line-buffered >> tmp.access-log

然后

less -S +F tmp.access-log

然后当我完成后,如果我不需要那个 tmp 文件,我就删除它。