O problema é que o shell está interpretando o $ no comando 1,$-1d .
(Especificamente, nos meus testes, ele interpreta $- como a coleção de set flags.)
A melhor maneira de corrigir isso é citar ou escapar da string EOF , como em
ed db/seeds.rb <<\EOF
ou
ed db/seeds.rb <<"EOF"
Como alternativa, você pode escapar (ou seja, colocar uma barra invertida na frente de)
cada $ no seu "documento aqui".