检索最后 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 &lt;filename&gt;...【参考方案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

将从 test.log 中获取最后 100 行

如果你想把上面的输出放在一个单独的文件中,那么你可以如下管道:-

tail -NUMBER_OF_LINES FILE_NAME > OUTPUT_FILE_NAME

例如tail -100 test.log &gt; output.log

将从 test.log 中获取最后 100 行并将它们存储到新文件 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自动倒计时刷新页面

查linux日志最后几行 用啥参数啊

Linux查看日志命令

linux下如何提取日志中指定的一段内容?100分急求!!!

liunx查看日志 | 最实用命令和方法

Linux 常用命令