これはうまくいくかもしれません(GNU sed):
sed -r ':a;${s/([^\n]*\n){3}//;q};N;7,$!ba;P;D' file
これは、パターン スペース (PS) で 6 行の移動ウィンドウを作成し、最後の行に遭遇したときにそれらの最初の 3 つを削除することによって機能します。
:a
ループラベルです
${s/([^\n]*\n){3}//;q}
ファイルの最後にある PS の最初の 3 行を削除して終了します。
N
改行を追加してから、次の行を PS に追加します。
7,$!ba
'への行である(ファイルの最後)への行でない場合は、最初のラベルにループバックします7
$
1
6
:a
P;D
7
(ファイルの終わり)までの行範囲については$
、PS の最初の改行まで印刷し、最初の改行まで削除し、新しいサイクルを開始します。
1
最後から 2 番目の句は、行が6
PS に追加されるという点で、デフォルトでウィンドウを作成します。行7
から最後まで行が最後に追加され、最初の行が印刷されてから削除されます。
または:
sed -e ':a' -e '$s/\([^\n]*\n\)\{3\}//' -e '$q' -e 'N' -e '7,$!ba' -e 'P' -e 'D' file