文字列から正/負の浮動小数点数を抽出する

文字列から正/負の浮動小数点数を抽出する

一部のテキストから数字を抽出しようとしています。現在私は以下を使用しています:

echo "2.5 test. test -50.8" | tr '\n' ' ' | sed -e 's/[^0-9.]/ /g' -e 's/^ *//g' -e 's/ *$//g' | tr -s ' '

それから2.5、「。」と50.8が表示されます。sed正であれ負であれ、浮動小数点数を検出するために最初のものをどのように変更する必要がありますか?

ベストアンサー1

grepこれに適しています。

$ echo "2.5 test. test -50.8" | grep -Eo '[+-]?[0-9]+([.][0-9]+)?'
2.5
-50.8

どのように動作しますか?

  • -E

    拡張正規表現を使用してください。

  • -o

    コンテキストではなく一致する項目のみを返します。

  • [+-]?[0-9]+([.][0-9]+)?+

    一致する数字は次のように識別されます。

    • [+-]?

      オプションのブートフラグ

    • [0-9]+

      1つ以上の数字

    • ([.][0-9]+)?

      オプションのピリオドの後に1つ以上の数字が続きます。

1行に出力を受け取る

$ echo "2.5 test. test -50.8" | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | tr '\n' ' '; echo ""
2.5 -50.8

おすすめ記事