正则表达式[[:digit:]]显示一行,数字之间有字母

时间:2019-03-08 11:37:07

标签: regex linux bash

我有一个看起来像这样的file.txt:

abe
abbe
cde
45a678
ae
cababb
12345

运行命令egrep [[:digit:]] file.txt之后 它显示结果两个结果:“ 45a678”和“ 12345”。我不明白为什么它会显示第一个结果(我坚称正则表达式将只显示带有数字的行)。

3 个答案:

答案 0 :(得分:2)

您正在搜索任何数字。您应该将其从行的开头(^)约束到结尾($),并在(+)之间找到至少一位数字。

egrep ^[[:digit:]]+$ file.txt

答案 1 :(得分:1)

正则表达式[:digit:]中的

仅匹配一个数字,而不检查所有行。

要解析所有行,您需要使用^作为开始行,$作为结束行。

结果

 egrep ^\d+$ file.txt

仅将那些与数字匹配的行

答案 2 :(得分:0)

您的正则表达式[[:digit:]]搜索具有[[:digit:]]的行,因此45a678匹配,因此请使用^[[:digit:]]*$来匹配所有唯一数字的行:

$ egrep ^[[:digit:]]*$ file1.txt
12345