ちょっと前にだけど、シェル芸botでそういった処理を行うという内容のPOSTがあったので残しておく。
例えば、3の6乗という数字を出す場合、bashでは以下のように実行すれば出力ができる。

echo $(( 3 ** 6))
blacknon@BS-PUB-UBUNTU-01:~$ echo $(( 3 ** 6 ))
729

じゃあ、この数字から3のn乗なのかを取得する(この場合、6を取得する)にはどうすればいいか? どうやら、底の変換公式を使うといいらしい(知らんかった)。

echo 729 | awk '{x=3;print $1" = "x" ** "log($1)/log(x)}'
blacknon@BS-PUB-UBUNTU-01:~$ echo 729 | awk '{x=3;print $1" = "x" ** "log($1)/log(x)}'
729 = 3 ** 6

こんな簡単に出せたんだなぁ…。 しらんかった。