O Solaris /usr/bin/awk é um awk muito antigo que não suporta funções do usuário. Então, nesse awk, float(123) é o mesmo que anything(123) ou anything 123 , que é a concatenação do valor da variável float ou anything (vazia se não definida) e 123 . Então, não é um erro, mas não faz nada.
Você escreveu
echo "Foampile=123" | awk -F '=' '{float="x"; print float($2) "<->" $1}'
você teria visto
x123<->Foampile
Não creio que exista qualquer implementação do awk que tenha uma função float .
O que você esperaria que essa função fizesse de qualquer maneira?
Por outro lado, os dispositivos POSIX modernos, como o Solaris /usr/xpg4/bin/awk ou nawk ou gawk , suportam as funções do usuário, portanto, a menos que você defina a função float ou anything , você verá esse erro.
echo "Foampile=123" | awk -F '=' '{ print $2 "<->" $1 }'
funcionaria exatamente da mesma forma (e funcionaria com os awks modernos).
Nos awks modernos, para diferenciar entre uma chamada de função e a concatenação de uma variável e algo dentro de chave, você precisa adicionar pelo menos um espaço extra:
$ echo x | awk '{print foo ($1)}'
x
$ echo x | awk 'function foo(x) {return "y"}; {print foo($1)}'
y