http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2063
$ time seq 9 | awk '{for(i=1;i<=50;i++){print $1,i}}' | paste - <(seq 9 | awk '{for(i=1;i<=50;i++){print $1^i}}' | bc) | awk '$2==length($3)' | wc -l 49 real 0m0.024s user 0m0.006s sys 0m0.017s
10^n=(n+1)桁、になってしまうので、x<=9について考える
# x, n, x^n という並びのデータを生成する
# x^n はawkだと桁あふれしそうなのでbcで計算
# (x, n と x^n を別々に作成し、pasteでくっつける)
# ちなみに n<=50 は適当です
# x, n を作る
seq 9 | awk '{for(i=1;i<=50;i++){print $1,i}}' |
# paste で x^n をくっつける(awkで式を作り、bcで計算)
paste - <(seq 9 | awk '{for(i=1;i<=50;i++){print $1^i}}' | bc) |
# n == x^nの桁数 を抽出し行数を数える
awk '$2==length($3)' | wc -l