
RHEL 5.8でfloat
これが欠けているのはなぜですか?awk
他の機能に置き換えられましたか?
ソラリスの場合:
echo "Foampile=123" | awk -F"=" '{ print float($2) "<->" $1 }'
返品
123<->Foampile
RHEL 5.8から
awk: (FILENAME=- FNR=1) fatal: function `float' not defined
答え1
Solarisは/usr/bin/awk
非常に古いawkであり、ユーザー機能をサポートしていません。したがって、そのawkでは、float(123)
or変数(設定されていない場合は空)との値を連結したorと同じです。したがって、エラーではありませんが、何もしません。anything(123)
anything 123
float
anything
123
あなたは書いたことがありますか?
echo "Foampile=123" | awk -F '=' '{float="x"; print float($2) "<->" $1}'
あなたは見るでしょう
x123<->Foampile
この機能を備えたawk実装はないと思いますfloat
。
この機能で何をしたいですか?
一方、Solarisなどの最新のPOSIX awkはユーザー機能をサポートしている/usr/xpg4/bin/awk
ため、その機能nawk
または機能を定義しないとエラーが表示されます。gawk
float
anything
echo "Foampile=123" | awk -F '=' '{ print $2 "<->" $1 }'
まったく同じように動作し、最新のawksでも動作します。
最新のawksでは、関数呼び出しと中括弧内の内容と変数の関連付けを明確にするには、少なくとも1つ以上の余分なスペースを追加する必要があります。
$ echo x | awk '{print foo ($1)}'
x
$ echo x | awk 'function foo(x) {return "y"}; {print foo($1)}'
y
答え2
私はこれがSolaris特有の機能だと思います。代わりに printf または sprintf を使用し、浮動小数点数を指定する必要があります。
awk 'BEGIN {printf "%1##f\n", "<->" $1}