Войти

Показать полную графическую версию : grep регулярные выражения


dogidogi
28-05-2009, 13:56
есть txt файл, формата:
8(919)234543
8(923)234234
84742343245

надо с помощью grep -e
вывести все телефоны по шаблону : grep -e "(8\([0-9]{3})[0-9]{7}\))$"
grep ничего не выдаете, помогите найти ошибку

BuGfiX
28-05-2009, 15:02
egrep '^8\([0-9]{3}\)[0-9]{6}$' file.txt
после скобок у Вас 6 знаков, а не 7

dogidogi
28-05-2009, 15:04
проходит без ошибок, но результат не выводит (

BuGfiX
28-05-2009, 16:08
На том примере что Вы привели работает:
[bugfix@darkstar ~]$ cat file.txt
8(919)234543
8(923)234234
84742343245
[bugfix@darkstar ~]$ egrep '^8\([0-9]{3}\)[0-9]{6}$' file.txt
8(919)234543
8(923)234234
[bugfix@darkstar ~]$
Укажите точно что нужно выбрать, возможно пример неверный ?

dogidogi
28-05-2009, 17:29
marat@ubuntu:~$ cat 1.txt
8(910)3591462 Alexey
8(919)4567842 Marat
84742453672 Avdotiy
46-09-18
marat@ubuntu:~$ egrep '^8\([0-9]{3}\)[0-9]{7}$' 1.txt
marat@ubuntu:~$

BuGfiX
28-05-2009, 18:17
А что нужно выбирать из этого примера то? все номера телефонов ?
Ну а тот греп что я предлагал не работает из-за того что в предыдущем примере конец строки все-таки находился в другом месте.

dogidogi
28-05-2009, 21:17
надо выбрать номера сотовых телефонов со скобочками, ну и соответственно кому они принадлежат, должно получиться :
8(910)3591462 Alexey
8(919)4567842 Marat

BuGfiX
28-05-2009, 22:51
egrep '^8\([0-9]{3}\)[0-9]{6}.*' file.txt

dogidogi
28-05-2009, 22:54
все огромное спасибо, так вроде заработала, а как теперь вывести и именами людей?




© OSzone.net 2001-2012