使用“grep”命令查找包含电话号码的txt文件

时间:2011-02-28 05:37:47

标签: linux unix command-line grep

使用“grep”命令查找包含电话号码的txt文件。

电话号码格式可以是:

"***-*******"
"**********"
"*** *******"
"***-***-****"

怎么写呢?

2 个答案:

答案 0 :(得分:6)

数字为3位数(\ d {3}),空格或短划线[\ s-],3位数(\ d {3}),空格或短划线[\ s-],4位数(\ d {4 })。

grep '\d{3}[\s\-]{0,1}\d{3}[\s\-]{0,1}\d{4}' infile.txt

编辑 @Mark和Jed - 好建议 - 根据推荐进行更新

答案 1 :(得分:2)

$ cat file
test 1234567890 test
blah 123-4567890 junk junk 546-3345622 junk
blah blah 123 4575463 sdfsljads 123_456_4356 end
123--4567890

$ grep -Po '\d{3}[\s\-_]?\d{3}[\s\-_]?\d{4}'  file
1234567890
123-4567890
546-3345622
123 4575463
123_456_4356

$ ruby -ne 'puts $_.scan(/\d{3}[\s\-_]?\d{3}[\s\-_]?\d{4}/)' file
1234567890
123-4567890
546-3345622
123 4575463
123_456_4356