如何使用grep匹配文件中的3个数字?我的文件看起来像这样:
123
122
222
333443
fdsfs5454353
dsfsfjsk4654641
请注意,某些行包含尾随空格。我想只匹配三位数字。我试过了:
grep -E [0-9]{3} test.txt
grep -E '\<[0-9]{3}\>' test.txt
答案 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
这使用一个边界(也称为范围)在每一行的开头查找正好三个数字,后跟一个单词边界。单词边界将匹配尾随空格或行尾,确保在任何一种情况下都能获得正确的匹配。