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 文件,我就删除它。
我想查看我网站访问日志的实时输出。我只想查看某些类型的条目,在这种情况下,匹配“.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 文件,我就删除它。