只使用带有egrep的数字的行

时间:2018-05-07 16:43:57

标签: regex bash grep

我有一个文件,其中行包含带字符的数字,只包含字符和数字。我想选择只有数字的行。我试过了egrep '[^[:alpha:]]' filename,但我也带了字符。有什么想法吗?

AQ
Feb 9, 1999
11:45
45

我只想要

45

4 个答案:

答案 0 :(得分:1)

正则表达式需要检查该行上的所有内容是否为数字。因此,表达式周围需要^$来匹配每行的开头到结尾。此外,匹配将需要明确地用于数字,而不是非alpha。

E.g。

 egrep '^[[:digit:]]+$' filename

这很好地反对了问题中的例子。

答案 1 :(得分:1)

我会排除任何包含非数字字符的行:

Picasso
            .get()
            .load(BASE_URL + movieData.moviePoster)
            .into(holder.imageView)

答案 2 :(得分:0)

awk

只有数字的行,没有别的

$ awk '/^[0-9]+$/' file
45

或者,排除任何没有数字字符的行

$ awk '!/[^0-9]/' file
45

答案 3 :(得分:0)

要匹配仅包含数字的行,请使用"整行模式"与-x

grep -xE '[[:digit:]]+' file

或将行开始/结束锚点添加到正则表达式:

grep -E '^[[:digit:]]+$' file

请注意,如果您只关注匹配0到9之间的ASCII字符,则可以用范围[:digit:]替换字符类0-9

grep -xE '[0-9]+' file