最初ではなく最後のn行出力することはより複雑ですが実現可能です. nは,文字を駄目にする前に二行目でエンコードされます.
このスクリプトは,最終的な出力をホールド空間に保持し,最後に出力する
tacスクリプトに似ています.
#!/usr/bin/sed -nf
1! {; H; g; }
1,10 !s/[^\n]*\n//
$p
h
そのスクリプトの中心では,10行のウィンドウを保持し,行を追加し最も古い
行を削除しながらスライドしていきます(二行目の置換コマンドはDコマ
ンドのように動作しますがループを再開しません).
“スライドウィンドウ”のテクニックは,効率的で複雑なsedを書く
強力な方法で,それは,Pのようなコマンドを手動で実装する場合は多
くの作業が必要になるためです.
この章の残りで十分に説明している,N,P,そしてDコ
マンドを基本としているテクニックを導入するため,単純な`スライドウィンド
ウ' を使用しているtailの実装を以下に上げます.
これは複雑に見えますが,実際最後のスクリプトと同じように動作します.し
かし,適切な行数を捨てた後で,内部の行の場所を保持するためのホールドス
ペースを使用するために停止し,パターン空間を一行スライドするために
NとDを代わりに使用しています.
#!/usr/bin/sed -f
1h
2,10 {; H; g; }
$q
1,9d
N
D