Bashで数値を対応する文字列(低/高)に置き換えるには?

Bashで数値を対応する文字列(低/高)に置き換えるには?

ファイルがあります:

property(Address1, 4.5)
property(Address2, 2.2)
property(Address3, 9.0)
property(Address4, 3.4)
---

いくつかの条件に応じて浮動小数点数を変更したいと思います(たとえば、2から4の間の数値がLowになり、そうでなければHighに置き換えます)。

property(Address1, High)
property(Address2, Low)
property(Address3, High)
property(Address4, Low)
---

私の試み:(1)まず$を使って数字を抽出します。 (2)条件(3)が満たされていることを確認して印刷します。ただし、このプロセスではアドレス*を出力ファイルに出力できません。

ベストアンサー1

これは(厳密に)あなたの要件を満たしています。

awk '{ print $1, (($2>2)&&($2<4))?"Low)":"High)" }'

9.0)しかし、awkはこのような文字列(末尾の角かっこを含む)を数値に変換するという事実を利用します9。たとえば、スペースを追加すると失敗する可能性があります。

より厳密な解決策は、閉じ括弧をフィールド区切り文字として使用して、フィールド番号の内容からそれらを削除することです2

awk -F'[ )]' '{print $1,(($2>2)&&($2<4))?"Low)":"High)"}'

おすすめ記事