Pokud chceš, aby shell expandoval proměnné uvnitř výrazu pro sed, nesmíš ho dávat do jednoduchých uvozovek, které se používají přesně z toho důvodu, aby se nestalo, že tam shell něco změní. Pokud tam jiné výrazy, které by shell mohly zajímat nejsou, můžeš použít uvozovky dvojité:
sed -e "$a,${b}d" data.txt > data2.txt
$b je třeba oddělit od příkazu d.