检索最后100行日志

时间:2016-05-02 18:46:49

标签: linux logging sed

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

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

请让我知道如何更改此命令以专门检索最后 100行。

6 个答案:

答案 0 :(得分:201)

您可以使用tail命令,如下所示:

tail -100 <log file>   > newLogfile

现在newLogfile

中将有最后100行

修改

twalberg提到的更新版尾部使用命令:

tail -n 100 <log file>   > newLogfile

答案 1 :(得分:10)

看,sed脚本打印了你可以在sed(https://www.gnu.org/software/sed/manual/sed.html#tail)文档中找到的最后100行:

$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p

$ sed -nf sed.cmd logfilename

对我而言,这比你的剧本更难以

tail -n 100 logfilename

简单得多。它非常有效,如果没有必要,它将无法读取所有文件。请参阅我的回答,其中包含tail ./huge-filehttps://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910

的strace报告

答案 2 :(得分:5)

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

简介

  

尾巴[-F | -f | -r] [-q] [-b号| -c号| -n号] [文件...]

这里

  

-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 :(得分:2)

我知道这已经很老了,但是,无论对谁有帮助。

less +F my_log_file.log

这仅仅是基本的,用更少的时间,您可以做很多更强大的事情。一旦您开始查看日志,就可以进行搜索,转到行号,搜索模式等等,而且对于大型文件来说,速度更快。

就像vim记录日志一样[完全是我的看法]

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

更少的备忘单:https://gist.github.com/glnds/8862214

答案 4 :(得分:0)

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

尾部-NUMBER_OF_LINES FILE_NAME

例如tail -100 test.log

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

如果需要将以上内容输出到单独的文件中,则可以按以下方式进行管道传输:-

尾巴-NUMBER_OF_LINES FILE_NAME> OUTPUT_FILE_NAME

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

  • 将从test.log获取最后100行并将其存储到新文件output.log中)

答案 5 :(得分:-1)

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

第一行取文件的长度(总行) 然后在总行中+1 之后,我们必须添加100条记录,因此总长度为-99 然后只需将变量放入sed命令即可从文件中获取最后100行

我希望这会对您有所帮助。