自分の書いたことに自信がなくなったので、ちょっと調べて試してみました。
info sed によると、d コマンドは "Delete the pattern space; immediately
start next cycle." だそうです。immediately です! ですから、
$ seq 7 |sed -e '$a END' -e '1,3!d'
1
2
3
END
と、END が表示されますが、次のように書くと、
$ seq 7 |sed -e '1,3!d' -e '$a END'
1
2
3
となり、END が表示されません。
今度の説明も間違っているかもしれませんけれど。