Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Нужен скрипт, выдерающий сотовый номера из txt.

Ответить
Настройки темы
CMD/BAT - Нужен скрипт, выдерающий сотовый номера из txt.

Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет всем! Собственно, сабж! Нужен скрипт! Есть *.txt, в нём много сотовых номеров, стоят не попорядку, но между каждым есть пробел, а то и несколько. Все номера в виде : 79XXXXXXXXX. Задача: вытащить все эти номера в отдельный txt и чтобы они не повторялись.
Спасибо заранее за помощь!

Отправлено: 19:04, 02-06-2012

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


jellypop, пример файла txt?
Код: Выделить весь код
@echo off
setlocal

for /f "tokens=*" %%i in (1.txt) do call:1 %%i
for /f "tokens=2 delims==" %%i in (' set 79 ') do 1>>2.txt echo %%i
goto:eof

:1
for %%i in (%*) do set "%%i=%%i"

Последний раз редактировалось Foreigner, 02-06-2012 в 19:24.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:14, 02-06-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Эта задача элементарно решается с помощью grep и такое решение будет работать с любым форматом обрабатываемого файла, даже если номера все в одну строку будут, без разделителей.
Код: Выделить весь код
Set PhoneNumbers=
For /F "delims=" %%N In ('grep -E -o "79[0-9]{9}" "file.txt"') Do (Echo !PhoneNumbers!|Find "%%N"||Set PhoneNumbers=!PhoneNumbers! %%N)
For %%A In (%PhoneNumbers%) Do (Echo %%A>>output.txt)
Проследите, чтобы бинарник grep был добавлен в Path или находился рядом со скриптом.

Отправлено: 19:28, 02-06-2012 | #3


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


Первый скрипт не работает (не появляется 2.txt), второй - сейчас попробую..
Пример файла:
Цитата:
Дата Время С номера На номер Регион Длит-ть Стоимость Тариф 02.02.2012 19:37:56 sip:sip@sip.sip 79********2 Московская область-Мобильный 00:00:00 0,00 00:01:00 2,00 2,00 22.04.2012 18:35:43 sip:sip@sip.sip 79********3 Московская область-Мобильный 00:00:00 0,00 00:01:00 2,00 2,00 22.04.2012 18:38:22 sip:sip@sip.sip 79********3 Московская область-Мобильный 00:00:00 0,00 00:00:00 0,00 2,00 22.04.2012 18:51:19 sip:sip@sip.sip 79********3 Московская область-Мобильный 00:00:00 0,00 00:01:00 2,00 2,00 29.04.2012 16:08:03 sip:sip@sip.sip 79********0 Московская область-Мобильный 00:00:00 0,00 00:01:00 2,00 2,00 05.05.2012 21:16:18 sip:sip@sip.sip 79********0 Московская область-Мобильный 00:00:00 0,00 2,00 05.05.2012 21:17:38 sip:sip@sip.sip 79********0 Московская область-Мобильный 00:00:00 0,00 00:02:00 4,00 2,00 05.05.2012 21:33:27 sip:sip@sip.sip 79********0 Московская область-Мобильный 00:00:00 0,00 00:02:00 4,00 2,00
Цитата Anonymоus:
Проследите, чтобы бинарник grep был добавлен в Path или находился рядом со скриптом. »
grep на чистую систему запрашивает кучу библиотек, уже 4 по порядку скачал, сколько можно...?
лучше уж на bat.

Upd: не заметил архив зависимостей. Сейчас повторю попытку.
Upd2: даже не разобрался, как запустить скрипт. Аноним, уважаемый, подскажи.

Последний раз редактировалось jellypop, 02-06-2012 в 21:19.


Отправлено: 21:03, 02-06-2012 | #4


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата jellypop:
Первый скрипт не работает (не появляется 2.txt) »
Проверил на твоем примере. Все работает. Исходный файл называется 1.txt?

Отправлено: 21:53, 02-06-2012 | #5


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


jellypop, вот в этом архиве grep со всеми зависимостями и сам скрипт. Просто перетащите текстовый файл с номерами на него, и он создаст рядом файл output.txt, в котором будут только сами номера.
http://rghost.ru/38437215

Отправлено: 21:59, 02-06-2012 | #6


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Проверил на твоем примере. Все работает. Исходный файл называется 1.txt? »
Цитата:
Не удается найти файл 1.txt.
Переменная среды 79 не определена
Скрипт и текстовик лежит в одном каталоге, название точно 1.txt.

Цитата Anonymоus:
jellypop, вот в этом архиве grep со всеми зависимостями и сам скрипт. Просто перетащите текстовый файл с номерами на него, и он создаст рядом файл output.txt, в котором будут только сами номера.
http://rghost.ru/38437215 »
Сейчас попробую.

Upd: что-то я какой-то точно деревянный. Положил текстовик с именем 1.txt в папку bin, запустил parse.cmd - и ничего.
Upd2: и батник заработал! чудеса прямо какие-то.
Upd3: КРИРО заработал ) аутпут.txt:
!PhoneNumbers!
79********0

Один какой-то номер только. )

Последний раз редактировалось jellypop, 02-06-2012 в 22:16.


Отправлено: 22:07, 02-06-2012 | #7


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


jellypop, да не нужно в bin ложить, внутри bin только бинарник и либы для грепа. Там есть скрипт, parse.cmd, вот на него нужно перетянуть файл. И всё, никаких лишних телодвижений. Рядом появится output.txt, там будут номера.

Цитата jellypop:
Upd3: КРИРО заработал ) аутпут.txt:
!PhoneNumbers!
79********0
Один какой-то номер только. ) »
Чудеса прямо. Я у себя тестировал, все номера в файле определяет, такое впечатление, что у вас не работает EnableDelayedExpansion по какой-то причине. Какая кодировка файла с номерами? Попробуйте в cp1251 пересохранить.

Последний раз редактировалось Anonymоus, 02-06-2012 в 22:24.


Отправлено: 22:15, 02-06-2012 | #8


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Anonymоus:
jellypop, да не нужно в bin ложить, внутри bin бинарники и либы грепа. Там есть скрипт, parse.cmd, вот на него нужно перетянуть файл. И всё, никаких лишних телодвижений. Рядом появится output.txt, там будут номера. »
Перетащил, сначала чёрная консоль, затем идёт перебор номеров, видимо, т.к. на экране они мелькают, НО ЗАТЕМ:
Цитата:
Слишком длинная командная строка.
Слишком длинная командная строка.
Слишком длинная командная строка.
И так минуты две. Консоль закрывается, output.txt нигде нет.
P.S. Если это важно, то у меня текстовик в 3 МБ.

Отправлено: 22:24, 02-06-2012 | #9


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Цитата jellypop:
P.S. Если это важно, то у меня текстовик в 3 МБ. »
Очень важно. Там же ограничение на число символов в строке, а проверку на дубли я именно так делаю. Сейчас перепишу под использование внешней утилиты uniqline

UPD: Сделал, пробуйте - http://rghost.ru/38437987

Последний раз редактировалось Anonymоus, 02-06-2012 в 22:33.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:26, 02-06-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Нужен скрипт, выдерающий сотовый номера из txt.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Нужен сотовый классический, моноблок, кнопочный (не сенсор !) Этих марок Nokia, Son micro8 Мобильные ОС, смартфоны и планшеты 4 26-11-2018 13:31
[решено] Скрипт генерации номера заказа (пример HT343DT) medveduk-88 Хочу все знать 3 13-07-2011 13:03
Нужен скрипт paladin Вебмастеру 3 06-05-2004 20:09
Нужен скрипт календаря на .pl xkspy Вебмастеру 1 05-04-2003 15:40
Нужен скрипт !!! RAY Вебмастеру 1 14-03-2003 10:42




 
Переход