PDA

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


masteralexey004
17-08-2012, 20:47
день добрый
кто может помочь?
есть текстовый файл, в нем куча объявлений и номера телефонов в формате: т. 8-999-999-99-99
как сделать так - чтобы все телефоны записались в отдельный файл?

vadblm
17-08-2012, 21:00
grep -ohw 'т. 8-[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]' sourcefile > result
Ну и если нужно убрать "т. " то так:
grep -ohw 'т. 8-[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]' sourcefile | sed 's/т. //g' > result

masteralexey004
17-08-2012, 23:47
пустой файл выходит почемуто :)

vadblm
17-08-2012, 23:58
Значит, некорректно поставлена задача. Дайте что ли кусочек исходного файла.

masteralexey004
18-08-2012, 09:49
Есть газета. В ней много текста - к примеру
продается машина москвич 2140. т. 8-000-000-00-00.
нужно вытянуть тел и записать его в файл

vadblm
18-08-2012, 10:58
Короче, формулирую за вас: телефонный номер всегда начинается с символов "т. 8-", дальше идут 10 цифр, могущие быть в диапазоне от 0 до 9, сгруппированные в 4 группы по 3,3,2,2, разделённые символом "-". Я дал выражение для этой формулировки, но вы говорите ,что оно не срабатывает, значит формулировка неверна. Может между "т." и "8-" не один пробел, а два, или вообще нет, может исходный файл в другой кодировке (CP866, CP1251, KOI8-R), а в линуксе UTF-8. Дефисы бывают разные, может такой "-", а может такой "—", да и пробелов в типографском деле целый пучок, а с точки зрения системы они все разные символы. Они даже порой в разных кодировках по разному кодируются, например, неразрывный пробел (nbsp) в KOI8-R имеет код 0x9A, а в других — 0xA0.




© OSzone.net 2001-2012