ファイルの最後の80行に移動したいのですが、celery.log
ファイルの行数がわからないとしましょう。
このコマンドと同じですtail
が、デフォルトではなく最後から80行目に移動します。
どうすればいいですか?
答え1
echo '$-79p' | ed -s celery.log
ed
これにより、ファイルの最後の行から始まり、79行を表示するスクリプトが名前付きファイルで実行されます。$-79p
celery.log
この文字列を理解するシェルでは:
ed -s celery.log <<<'$-79p'
ファイルに80行未満があると、ed
エラー(標準エラーストリームの文字)が返され、?
標準出力ストリームに出力は生成されません。
答え2
tail -n 80 celery.log | head -n 1
これにより、最後の80行の最初の行が表示されます(ファイルの行が80行未満の場合はファイルの最初の行が表示されます)。
答え3
次のことができます。
tac celery.log | sed -n '80p'