Ваше регулярное выражение ищет ноль, за которым следует любой символ.Вы хотите проверить, что за ним не стоит ноль, но не заменить ненулевой символ.
Вы можете захватить и вернуть символ, который хотите сохранить:
sed 's/^0\([^0]\)/@\1/' file
Или выможет позаботиться о замене только первого символа в строках, которые соответствуют этому регулярному выражению:
sed '/^0[^0]/s/^0/@/' file
Как всегда, указание, что что-то повторяется ровно один раз, бессмысленно и излишне.