grep(POSIX) 单行空白 space 之间的正则表达式浮点
grep(POSIX) regex floating point between blank space in single line
我需要 grep(posix) 的正则表达式来仅打印(return true) 如果单行中由空白 space 分隔的每个浮点都有效,例如:
3.14 12 18.9
并且不打印任何内容(return 错误)
如果一个或多个无效浮点出现在空白 space 之间的那一行,例如:
8.12 1.1.1 78
或
1..28 1.09 46
浮点数可以尽可能多地出现在单行中,只要是有效的浮点数,用空格分隔 space 它会 return true/print 通过 grep(posix).
目前我有 grep 的正则表达式:
grep -E "^[[:blank:][:digit:]]*.+[[:digit:]]+$" FILE
它适用于以下模式:
1.13 1 1.2.3 1. 1
但我不会像 1.2.3 和 1.1 这样的模式匹配,我只需要在空白 space.
之间输入 1.13 或 1
注意:我只需要单行工作。
您可以使用
grep -E '^[0-9]+(\.[0-9]+)?([[:blank:]][0-9]+(\.[0-9]+)?)*$'
详情:
^
- 字符串开头
[0-9]+
- 一位或多位数字
(\.[0-9]+)?
- 可选择出现 .
和一个或多个数字
([[:blank:]][0-9]+(\.[0-9]+)?)*
- 零次或多次出现
[[:blank:]]
- 制表符或 space
[0-9]+(\.[0-9]+)?
- 一位或多位数字后跟可选的 .
和一位或多位数字
$
- 字符串结尾。
我需要 grep(posix) 的正则表达式来仅打印(return true) 如果单行中由空白 space 分隔的每个浮点都有效,例如:
3.14 12 18.9
并且不打印任何内容(return 错误) 如果一个或多个无效浮点出现在空白 space 之间的那一行,例如:
8.12 1.1.1 78
或
1..28 1.09 46
浮点数可以尽可能多地出现在单行中,只要是有效的浮点数,用空格分隔 space 它会 return true/print 通过 grep(posix).
目前我有 grep 的正则表达式:
grep -E "^[[:blank:][:digit:]]*.+[[:digit:]]+$" FILE
它适用于以下模式:
1.13 1 1.2.3 1. 1
但我不会像 1.2.3 和 1.1 这样的模式匹配,我只需要在空白 space.
之间输入 1.13 或 1注意:我只需要单行工作。
您可以使用
grep -E '^[0-9]+(\.[0-9]+)?([[:blank:]][0-9]+(\.[0-9]+)?)*$'
详情:
^
- 字符串开头[0-9]+
- 一位或多位数字(\.[0-9]+)?
- 可选择出现.
和一个或多个数字([[:blank:]][0-9]+(\.[0-9]+)?)*
- 零次或多次出现[[:blank:]]
- 制表符或 space[0-9]+(\.[0-9]+)?
- 一位或多位数字后跟可选的.
和一位或多位数字
$
- 字符串结尾。