2015-02-24 2 views
-1

Хорошо, поэтому мне нужно, чтобы у меня был .txt-файл с именами, за которыми следуют их соответствующие номера телефонов, и вам нужно взять все номера, следующие за ### - ### - # ### синтаксис, который я достиг с этим кодомunix телефонный синтаксис с различными способами написания американских телефонных номеров

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, будьте нежны!

+0

возможно дубликат [Всеобъемлющий регулярное выражение для проверки номера телефона] (http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation) –

ответ

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 
Смежные вопросы