unix电话语法与不同的写美国电话号码的方式

时间:2015-02-24 22:03:04

标签: unix grep

好的,我需要一个.txt文件,其名称后跟各自的电话号码,需要按照### - ### - ####语法获取所有数字,这是我用这段代码完成的

grep -E "([0-9]{3})-[0-9]{3}-[0-9]{4}" telephonefile_P2

但我的问题是有

的实例

(###) - ### - ####

(###)### ####

### ### ####

### - ####

这是文件:

Sam Spade (212)-756-1045
Daffy Duck 312 450 2856
Mom 354-2015
Star Club 49 040–31 77 78 0
Lolita Spengler (816) 756 8657
Hoffman's Kleider 049 37 1836 027
Dr. Harold Kranzler 765-986-9987
Ralph Spoilsport's Motors 967 882 6534
Hermann's Speilhaus 49 25 8377 1765
Hal Kubrick 44 1289 332934
Sister Sue 978 0672
Auggie Keller 49 089/594 393
JCCC 913-469-8500

这是我想要的输出:

Sam Spade (212)-756-1045
Daffy Duck 312 450 2856
Mom 354-2015
Lolita Spengler (816) 756 8657
Dr. Harold Kranzler 765-986-9987
Ralph Spoilsport's Motors 967 882 6534
Sister Sue 978 0672
JCCC 913-469-8500

我不知道如何解释这些替代表格...... 对于Unix来说显然是新手,请温柔!

1 个答案:

答案 0 :(得分:0)

$ awk '/(^|[[:space:]])(\(?[0-9]{3}\)?[- ])?[0-9]{3}[- ][0-9]{4}([[:space:]]|$)/' file
Sam Spade (212)-756-1045
Daffy Duck 312 450 2856
Mom 354-2015
Lolita Spengler (816) 756 8657
Dr. Harold Kranzler 765-986-9987
Ralph Spoilsport's Motors 967 882 6534
Sister Sue 978 0672
JCCC 913-469-8500