我需要从日志文件中检索最后100行日志。 我尝试了sed命令
sed -n -e '100,$p' logfilename
请让我知道如何更改此命令以专门检索最后 100行。
答案 0 :(得分:201)
您可以使用tail命令,如下所示:
tail -100 <log file> > newLogfile
现在newLogfile
修改强>
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-file
:https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910
答案 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
答案 4 :(得分:0)
您可以简单地使用以下命令:-
尾部-NUMBER_OF_LINES FILE_NAME
例如tail -100 test.log
如果需要将以上内容输出到单独的文件中,则可以按以下方式进行管道传输:-
尾巴-NUMBER_OF_LINES FILE_NAME> OUTPUT_FILE_NAME
例如tail -100 test.log > 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行
我希望这会对您有所帮助。