注意:話を簡単にするため、実行環境都合によるエスケープ""は一旦無視し、あくまで正規表現上の話に限定します。
不特定多数の文字列の中から数字のみ抜き出すシェルスクリプトを書こうとしています。
やり方は幾つかあると思いますが、一番単純なのは既に別の方の回答にある通り、
とするのが簡単だし、仮に同一行内に数字が複数回出現した場合でも数字以外を削除することができるため汎用性があります。
例)hoge123piyo456fuga
ただし、上記の例では汎用性がありすぎるというのであれば、限定的な方法もあります。例えば英字数字英字のパターンにマッチした場合のみ数字だけを残したい、とするならば、
  置換前:^[a-zA-Z]+([0-9]+)[a-zA-Z]+$
  置換後:\1
とすればかなり限定したパターンマッチになります。目的に応じて使い分けてください。
ではなぜ、takkuru98さんのコマンドではダメだったか。
  置換前:^*([0-9]*)$
  置換後:\1
  ※実行環境都合によるエスケープはを除外しています
まずは置換前の最初の2文字"^"についてです。
恐らくやりたかったことは「何かしらの数字以外の文字列」を表現したいと理解しました。
正規表現のルールに則ると、2文字目の""は1文字目の"^"にかかっています。
"*"は直前の文字列を「0個以上繰り返し」ですから、行頭を意味する"^"を「0個以上繰り返し」としても、よく意味がわかりませんね^^;
次に置換前の括弧で括られた部分"([0-9])"ですが、これは問題ありません。
ただ、この場合は数字が0個の場合でもパターンとしてマッチしますので、必ず数字が出てくるケースに限定したいのであれば""を"+"(1個以上の繰り返し)にして下さい。
置換前の最後は特にパターンマッチさせることなく行末"$"で終わっていますが、"hoge123moge"でいうところの"moge"に当たるパターンを指定しなければなりません。英字に限定するのであれば"[a-zA-Z]+"、数字以外とするならば"[^0-9]+"とすれば良いでしょう。
余談になりますが、私が正規表現の確認する際はよくサクラエディタを使用しています。サクラエディタに文字列を並べ、正規表現を指定で検索でマッチした範囲が色付けされるので便利です。ただし、サクラエディタの正規表現は多少拡張されているため、その辺はヘルプを見ながら、あるいは実際にsedを実行して最終確認をするのがよいかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。