检索最后 100 行日志
Posted
技术标签:
【中文标题】检索最后 100 行日志【英文标题】:Retrieve last 100 lines logs 【发布时间】:2016-08-27 15:10:39 【问题描述】:我需要从日志文件中。 我尝试了 sed 命令
sed -n -e '100,$p' logfilename
请告诉我如何更改此命令以专门检索 last 100 行。
【问题讨论】:
手册中有提到:gnu.org/software/sed/manual/html_node/tail.html#tail,sed如何模拟tail。 tail -f -n 100 日志文件名 【参考方案1】:您可以使用tail命令如下:
tail -100 <log file> > newLogfile
现在最后 100 行将出现在 newLogfile
编辑:
twalberg 提到的最新版本的 tail 使用命令:
tail -n 100 <log file> > newLogfile
【讨论】:
请注意,tail
的一些更新版本需要语法 tail -n 100 <filename>
...【参考方案2】:
“tail”是显示文件最后一部分的命令,使用适当的可用开关有助于我们获得更具体的输出。对我来说最常用的开关是 -n 和 -f
概要
尾巴 [-F | -f | -r] [-q] [-b 数字 | -c 号码 | -n number] [文件...]
这里
-n 数字: 位置是数字线。
-f : -f 选项导致 tail 在文件结束时不停止 到达,而是等待附加数据附加到 输入。 -f 选项被忽略,如果 标准输入是管道,但如果是 FIFO,则不是。
检索最后 100 行日志
To get last static 100 lines
tail -n 100 <file path>
To get real time last 100 lines
tail -f -n 100 <file path>
【讨论】:
【参考方案3】:看,打印最后 100 行的 sed 脚本,您可以在 sed (https://www.gnu.org/software/sed/manual/sed.html#tail) 的文档中找到:
$ cat sed.cmd
1! ; H; g;
1,100 !s/[^\n]*\n//
$p
$ sed -nf sed.cmd logfilename
对我来说,这比你的脚本要困难得多,所以
tail -n 100 logfilename
要简单得多。而且效率很高,如果没有必要,它不会读取所有文件。查看我对tail ./huge-file
的 strace 报告的回答:https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910
【讨论】:
【参考方案4】:您可以简单地使用以下命令:-
tail -NUMBER_OF_LINES FILE_NAME
例如tail -100 test.log
如果你想把上面的输出放在一个单独的文件中,那么你可以如下管道:-
tail -NUMBER_OF_LINES FILE_NAME > OUTPUT_FILE_NAME
例如tail -100 test.log > output.log
【讨论】:
【参考方案5】:我知道这已经很老了,但是,对于可能有帮助的人来说。
less +F my_log_file.log
这只是基本的,用更少的东西你可以做很多更强大的事情。一旦您开始查看日志,您就可以进行搜索、转到行号、搜索模式等等,而且对于大文件来说速度更快。
它就像日志的 vim[完全是我的意见]
less 的原始文档:https://linux.die.net/man/1/less
更少的备忘单:https://gist.github.com/glnds/8862214
【讨论】:
“less”的一个重要特点是它不会将整个文件加载到内存中,因此会指示用它打开大文件。【参考方案6】:len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "$l,$lenp" filename
第一行取文件的长度(总行数) 然后在总行数中 +1 之后我们必须提取 100 条记录,所以总长度为 -99 然后只需将变量放在 sed 命令中即可从文件中获取最后 100 行
希望对你有所帮助。
【讨论】:
以上是关于检索最后 100 行日志的主要内容,如果未能解决你的问题,请参考以下文章
PHP自制Log日志文件查看器 - 读取log文件最后100行 - JS自动倒计时刷新页面