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
我希望 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