aha*_*jib 3 sed text-processing numeric-data
我试图从一些文本中提取数字。目前我正在使用以下内容:
echo "2.5 test. test -50.8" | tr '\n' ' ' | sed -e 's/[^0-9.]/ /g' -e 's/^ *//g' -e 's/ *$//g' | tr -s ' '
Run Code Online (Sandbox Code Playgroud)
这会给我 2.5,“。” 和 50.8。我应该如何修改第一个sed
以便检测浮点数,包括正数和负数?
Joh*_*024 15
grep
很适合这个:
$ echo "2.5 test. test -50.8" | grep -Eo '[+-]?[0-9]+([.][0-9]+)?'
2.5
-50.8
Run Code Online (Sandbox Code Playgroud)
-E
使用扩展正则表达式。
-o
仅返回匹配项,而不返回上下文
[+-]?[0-9]+([.][0-9]+)?+
匹配号码被识别为:
[+-]?
可选的前导标志
[0-9]+
一个或多个数字
([.][0-9]+)?
后跟一个或多个数字的可选句点。
$ echo "2.5 test. test -50.8" | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | tr '\n' ' '; echo ""
2.5 -50.8
Run Code Online (Sandbox Code Playgroud)