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