ご覧ください。sed のドキュメント (https://www.gnu.org/software/sed/manual/sed.html#tail) にある最後の 100 行を出力する sed スクリプト:
$ 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
次のコマンドを使用するだけです:-
末尾 -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 に保存します)
次のように tail コマンドを使用できます:
tail -100 <log file> > newLogfile
最後の 100 行が newLogfile
に表示されます
編集:
twalberg use コマンドで言及されているように、tail の最新バージョン:
tail -n 100 <log file> > newLogfile
「tail」は、ファイルの最後の部分を表示するコマンドです。使用可能な適切なスイッチを使用すると、より具体的な出力を得ることができます。私にとって最もよく使われるスイッチは -n と -f です
あらすじ
<ブロック引用>テール [-F | -f | -r] [-q] [-b 番号 | -c 番号 | -n 番号] [ファイル ...]
こちら
<ブロック引用>-n number :位置は 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>