Ale*_*ura 29 logs ubuntu text-processing portability
我试图查看在远程服务器上任意时间内foo bar出现了多少次/var/log/foo.log,但到目前为止我尝试过的一切都没有奏效。
我已经有了一个计时器脚本,我用它来跟踪自从我开始 tailing 以来已经过去了多长时间/var/log/foo.log,现在我只想知道一种方法来告诉foo bartailed 输出中出现了多少次。
我搜索了谷歌,但在结果的前 10 页中没有找到任何相关内容。
这是我尝试过的令人沮丧的结果:
## works on local machine, but doesn't work as expected on remote
tail -f /var/log/foo.log | grep foo\ bar | sed '='
## works on local, but not remote
tail -f /var/log/foo.log | grep foo\ bar | cat -n -
## works on local, but not remote
tail -f /var/log/foo.log | grep foo\ bar | awk -F'\n' '{printf "[%d]> ", NR; print $1}'
Run Code Online (Sandbox Code Playgroud)
我什至尝试编写一个类似于 的 sed 脚本tail -f,但我在这方面取得了有限的进展。
笔记
远程服务器正在运行的coreutils的旧版本,升级是一种选择,但不是以任何方式所需的解决方案。
pet*_*rph 36
tail -f | nl
Run Code Online (Sandbox Code Playgroud)
对我有用,这是我想到的第一个 - 也就是说,如果你真的想要从 1 开始编号的行,而不是从文件中看到的真实行号。grep如果需要,可以选择添加到适当的位置(之前或之后nl)。但是,请记住可能会发生缓冲。在我的特殊情况下,grep有--line-buffered选项,但nl缓冲它的输出并且没有关闭它的选项。因此tail | nl | grep组合并不能很好地流动。
那说,
tail -f | grep -n pattern
Run Code Online (Sandbox Code Playgroud)
也适用于我。编号再次从“拖尾”的开头而不是整个日志文件的开头开始。
Ada*_*lin 20
我觉得这个更好。。
less -N +F <filepath>
Run Code Online (Sandbox Code Playgroud)
您还可以将输出通过管道传输到less,它具有行号功能,-N可让您在日志中来回滚动。
$ tail -f /var/log/foo.log | less -N
Run Code Online (Sandbox Code Playgroud)
1 Jan 17 22:11:58 greeneggs fprintd[4323]: ** Message: entering main loop
2 Jan 17 22:12:01 greeneggs su: (to root) saml on pts/5
3 Jan 17 22:12:28 greeneggs fprintd[4323]: ** Message: No devices in use, exit
4 Jan 17 22:12:56 greeneggs gnome-session[1876]: 22:12:56 | Git | personal_repo | Checking for remote changes...
5 Jan 17 22:12:56 greeneggs gnome-session[1876]: 22:12:56 | Cmd | personal_repo | git rev-parse HEAD
6 Jan 17 22:12:56 greeneggs gnome-session[1876]: 22:12:56 | Cmd | personal_repo | git ls-remote --heads --exit-code "ssh://sam@sparkleshare.jake
6 8us.org/home/sam/SparkleShare/personal_repo.git" master
7 Jan 17 22:12:58 greeneggs gnome-session[1876]: X11 forwarding request failed on channel 1
8 Jan 17 22:12:58 greeneggs gnome-session[1876]: 22:12:58 | Git | personal_repo | No remote changes, local+remote: 532213be48cce3b93cb177d409faa
8 03b71d0cfa5
9 Jan 17 22:13:35 greeneggs gnome-session[1876]: 22:13:35 | ListenerTcp | Pinging tcp://notifications.sparkleshare.org:443/
10 Jan 17 22:13:35 greeneggs gnome-session[1876]: 22:13:35 | ListenerTcp | Received pong from tcp://notifications.sparkleshare.org:443/
Run Code Online (Sandbox Code Playgroud)
注意:注意输出。你可能喜欢也可能不喜欢这个特性,但它需要很长的行并将它们切碎,以便它们在下一行继续,但仍然保持相同的相应行号。在解析很宽的日志文件时,我发现此功能非常有用!您可以在第6行和第8行看到此功能的效果。