1

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

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

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

这可以很好地避免换行,但它没有被过滤:

less +F -S access-log

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

这种工作,但“光标”不会停留在文件的底部,并且我输入的任何命令都会less挂起(按“SHIFT + f”以在流到来时停留在底部):

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

但这根本不起作用:

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

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

我还采用了开箱即用的解决方案,也许会切割,sed这样每行都不会比我的屏幕长?

4

3 回答 3

1

使用 bash 我建议:

tail -f access-log | fgrep ".php" --line-buffered | cut -c 1-$COLUMNS
于 2017-05-17T19:20:16.973 回答
0

考虑使用以下watch命令:

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

于 2017-05-17T19:17:57.923 回答
0

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

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

进而

less -S +F tmp.access-log

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

于 2017-05-17T22:35:44.167 回答