我需要从日志文件中检索最后100行日志。 我尝试了sed命令

sed -n -e '100,$p' logfilename

请告诉我如何更改此命令以专门检索最后100行。


tail命令的使用方法如下:

tail -100 <log file>   > newLogfile

现在最后100行将出现在newLogfile

编辑:

twalberg提到的tail的最新版本使用命令:

tail -n 100 <log file>   > newLogfile

看,sed脚本打印您可以在sed文档中找到的最后100行(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

简单得多。这是相当有效的,它将不读取所有文件,如果不是必要的。看到我的答案与尾部的strace报告。/huge-file: https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910


“tail”是显示文件最后一部分的命令,使用适当的可用开关可以帮助我们获得更具体的输出。我最常用的开关是-n和-f

剧情简介

尾(f - f | | - r) (q) (- b号| - c号| - n号)文件[…]

在这里

-n number: 位置是数轴。 -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>

我知道这很古老了,但是,不管对谁有帮助。

less +F my_log_file.log

这只是最基本的,用更少的钱你可以做很多更强大的事情。一旦你开始看到日志,你可以做搜索,去行号,搜索模式,更多的加上它是更快的大文件。

这就像vim for log(完全是我的观点)

原始less的文档:https://linux.die.net/man/1/less

无作弊标签:https://gist.github.com/glnds/8862214


len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename

第一行取文件的总行数 然后在总直线上加1 之后,我们需要提取100条记录,总长度为-99 然后将变量放入sed命令中,从文件中获取最后100行

我希望这对你有所帮助。


您可以简单地使用以下命令:-

-NUMBER_OF_LINES文件名称

例如tail -100 test.log

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

在这种情况下,如果你想在一个单独的文件中输出上述输出,那么你可以像下面这样管道

tail -NUMBER_OF_LINES FILE_NAME >输出文件名称

例如tail -100 test.log > output.log

将从test.log中获取最后100行,并将它们存储到一个新的文件output.log中)