ファイルの最後5行を削除する例としてネットで以下を見つけたのですが、
 sed -e '$-4,$d' file
現在使用中のCentOS環境ではGNU sed 4.1.5版で以下のようなエラーが表示されてしまいます。
 sed: -e 表現 #1, 文字数 2: 未知のコマンドです: 「-」
GNUサイトから4.2をダウンロードしてみましたが、やっぱりダメで
そもそも上記の例がなんのsed(?)で実現したものなのかもわからないのですが…。

実際にやりたかったのはファイルの最後n行だけを対象に置換処理をすることで
 sed -e '$-4,$s/hoge/piyo/'
のようにしてみましたが当然ダメでした。

事前にwc -lで行数を取得し、exprで-4する方法と組み合わせるなどすれば
範囲を特定することもできると思いますが、
sedだけで完結できる方法はないでしょうか?