grep(POSIX) 单行中空白 space 之间的正则表达式多个浮点

grep(POSIX) regex multiple floating point between blank space in single line

我希望 grep(posix) 匹配文件中的浮点数,该文件只包含单行,其中浮点数之间用空白 space 分隔。

文件:

12 3.14 1.1.2.4

我的正则表达式是:

grep -E "^[[:digit:][:blank:]\.]*\.?[[:digit:]]+$" FILE

正则表达式成功匹配“| 12 | 3.14 | 1.1.2.4 |”在单行中, 但我们期望正常的浮点数匹配为“| 12 | 3.14 |” 但不是“|1.1.2.4|”因为它包含多个无效浮点数的点。 任何人都可以帮助我使用正确的正则表达式模式和 grep(posix) 来匹配一行中由空白 space 分隔的浮点吗?因为我使用 grep 作为计算浮点数的函数。

你可以试试这个grep:

grep -oE '(^|[[:blank:]])([[:digit:]]+(\.[[:digit:]]+)?|\.[[:digit:]]+)([[:blank:]]|$)' file

12
3.14