RHEL 5.8のawkにfloat関数がありません。

RHEL 5.8のawkにfloat関数がありません。

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 123floatanything123

あなたは書いたことがありますか?

echo "Foampile=123" | awk -F '=' '{float="x"; print float($2) "<->" $1}'

あなたは見るでしょう

x123<->Foampile

この機能を備えたawk実装はないと思いますfloat

この機能で何をしたいですか?

一方、Solarisなどの最新のPOSIX awkはユーザー機能をサポートしている/usr/xpg4/bin/awkため、その機能nawkまたは機能を定義しないとエラーが表示されます。gawkfloatanything

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

おすすめ記事