我的命令是:
grep -E '^ [0..9]'
我有的模式
24
-38.54270131
24
-38.54085331
24
-38.53603119
24
-38.53427780
24
-38.53396521
24
-38.53226876
24
-38.53211376
预期输出:
24
24
24
24
24
24
24
答案1
您没有以任何有意义的方式解释您的过滤条件。以下是一些可以提供所需输出的 RegEx 解决方案:
匹配任何以 2 个空格开头,然后是 2 个数字,最后是 EOL 的行:
grep -E '^ {2}[0-9]{2}$'
匹配任意行才不是行首包含 4 个空格,然后包含-
:
grep -vE '^ {4}-'
如果这对您不起作用,请明确说明您的过滤条件。
答案2
和大王:
awk '/^[[:blank:]]+[[:digit:]]+$/' file
... 将打印^
以[[:blank:]]
(空格和制表符)开头的行一次或多次+
1,后跟[[:digit:]]
(包括任何形式的 UNICODE 的数字)一次或多次,+
然后是行尾$
。
1)使用*
量词来匹配零个或多个[[:blank:]]
......这将还允许匹配仅包含以下内容的行[[:digit:]]
示范:
$ cat file
24
-38.54270131
24
-38.54085331
24
-38.53603119
24
-38.53427780
24
-38.53396521
24
-38.53226876
24
-38.53211376
$
$
$ awk '/^[[:blank:]]+[[:digit:]]+$/' file
24
24
24
24
24
24
24
$
答案3
如果您只想排除带有小数点的负数,那么:
$ grep -v '[.-]' infile.txt
24
24
24
24
24
24
24