ファイル行番号から「n」を引いた行に移動 [重複]

ファイル行番号から「n」を引いた行に移動 [重複]

ファイルの最後の80行に移動したいのですが、celery.logファイルの行数がわからないとしましょう。

このコマンドと同じですtailが、デフォルトではなく最後から80行目に移動します。

どうすればいいですか?

答え1

echo '$-79p' | ed -s celery.log

edこれにより、ファイルの最後の行から始まり、79行を表示するスクリプトが名前付きファイルで実行されます。$-79pcelery.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'

関連情報