在egrep中找到一组特定的数字

时间:2018-03-21 05:55:01

标签: regex linux shell grep

我目前仍在努力解决我遇到的这个问题。我试图使用egrep找到5位数的连续数字或9位数的连续数字。

现在我只得到一行上出现的5位数字,之后没有别的。我现在有......

egrep '^[[:digit:]]{5} | [[:digit:]]{9}$' file.txt

例如,如果我的file.txt有

123456789 24
12345 642
94363

将会找到的是

12345 642

如何制作它以便检查每一行并查看其他5位和9位数字?

编辑:在表达式周围使用括号查找...

1234 56789 4

12345 642

2 个答案:

答案 0 :(得分:0)

在表达式周围使用()

$ egrep "(^| )([[:digit:]]{5}|[[:digit:]]{9})( |$)" file
123456789 24
12345 642
94363

如果需要,请添加^$

修改:如果您将-o添加到egrep,您会看到所获得的内容:

$ egrep -o "(^| )([[:digit:]]{5}|[[:digit:]]{9})( |$)" file
123456789 
12345 
94363

答案 1 :(得分:0)

egrep '^[[:digit:]]{5} | [[:digit:]]{9}$' file.txt

删除^[[:digit:]]{5}后的空格,第3行在5位数后无空格,因此无法匹配。

删除[[:digit:]]{9}之前的空格,第一行在123456789之前没有空格,所以无法匹配。