最新の行を表示せずにファイルを追跡するには、「tail」を使用します。

最新の行を表示せずにファイルを追跡するには、「tail」を使用します。

私はtailのようなプログラムを使用して記録されたファイルを追跡しますが、最新の行を表示したくありません。

たとえば、新しいファイルに焦点を当てたときにファイルの行が30行未満の場合、テキストは表示されません。 30行以上のファイルを書き込むと、最初の行から画面に書き込まれます。

したがって、行31〜40がファイルに書き込まれると、行1〜10も画面に書き込まれます。

tailでこれを行う簡単な方法がない場合は、最初のファイルが1行を展開するたびに、最初のファイルの古い行を新しいファイルに書き込んで新しいファイルのtailを作成する方法があります。

ベストアンサー1

@muruと同じですが、保存と削除の代わりにモジュロ演算子を使用します。

tail -fn+1 some/file | awk -v n=30 '
   NR > n {print s[NR % n]}
   {s[NR % n] = $0}
   END{for (i = NR - n + 1; i <= NR; i++) print s[i % n]}'

おすすめ記事