如何将线条与三个数字匹配?

时间:2016-02-11 21:18:34

标签: regex linux grep digits

如何使用grep匹配文件中的3个数字?我的文件看起来像这样:

123  
122    
222  
333443  
fdsfs5454353  
dsfsfjsk4654641

请注意,某些行包含尾随空格。我想只匹配三位数字。我试过了:

grep -E [0-9]{3} test.txt
grep -E '\<[0-9]{3}\>' test.txt

2 个答案:

答案 0 :(得分:1)

grep '^[0-9][0-9]*' test|awk '{if(length($0) == 3) print $0}' 

或者如果你有空格:

sed 's/[ \t]*$//' test|grep   '^[0-9][0-9]*'|awk '{if(length($0) == 3) print $0}'

(谢谢@shellter)

答案 1 :(得分:1)

使用带边界的扩展正则表达式

I asked如果您指的是正好三位数的数字,或者字符串中的每个三位数匹配。 You replied您只想要包含正好三位数的行。

扩展grep为此提供了一个简单的解决方案。请考虑以下事项:

$ egrep '^\d{3}\b' /tmp/corpus 
123  
122    
222

这使用一个边界(也称为范围)在每一行的开头查找正好三个数字,后跟一个单词边界。单词边界将匹配尾随空格或行尾,确保在任何一种情况下都能获得正确的匹配。