[ОТВЕТИТЬ]
Опции темы
25.11.2013 18:27  
Tushkanchik
Есть файлик содерживое которого например
Иван 892811111
Петр 891855555

как можно оставить в нем только цифры ? Для смс рассылки)
Возможно както grep использовать, в ворде похожего не нашел.. Может у кого будет светлая мысль...
 
25.11.2013 19:37  
KirillHome
Совсем "в лоб" - заменить пробел на точку с запятой, открыть Excel-ем как csv, лишнее - удалить.
Чуть сложнее - через bat-ник.

К примеру:
Код:
FOR /F "eol=; tokens=2,3* delims=, " %i in (мойфайл.txt) do @echo %i %j %k

    разбирает файл myfile.txt, пропуская все строки, которые
    начинаются с символа точки с запятой, и передает вторую и
    третью подстроки из каждой строки в тело цикла "for", причем
    подстроки разделяются запятыми и/или пробелами.
    В теле цикла переменная %i используется для второй
    подстроки, %j - для третьей, а %k получает все оставшиеся
    подстроки после третьей. Имена файлов, содержащие пробелы,
    необходимо заключать в двойные кавычки. Чтобы использовать
    двойные кавычки, необходимо использовать параметр usebackq,
    иначе двойные кавычки будут восприняты как определение
    строки-литерала для разбора.

    Переменная %i явно объявлена в инструкции "for", а переменные
    %j и %k объявляются неявно с помощью ключа tokens=.
    Ключ tokens= позволяет извлечь из одной строки файла до
    26 подстрок, при условии, что это не приведет к попытке
    объявить переменную после буквы "z" или "Z". Следует помнить,
    что имена переменных FOR являются однобуквенными,
    с учетом регистра, глобальными, поэтому одновременно
    не может быть активно более 52 переменных.
Т.е. в данном случае будет

Код:
echo Start > flleout.txt
FOR /F "eol=; tokens=2 delims=, " %i in (мойфайл.txt) do @echo >>%i
 
25.11.2013 20:42  
KirillHome
Конечно, ошибся...
Имелось в виду вот так:
Код:
if exist flleout.txt del flleout.txt
FOR /F "eol=; tokens=2 delims=, " %i in (filein.txt) do @echo %i>>flleout.txt
 
25.11.2013 20:44  
twix
SQL код:
<?php
$source 
fopen($argv[1], 'r');
$output '';
while ((
$line fgets($source)) !== false) {
    
$output .= preg_replace('/[^0-9.]+/'''$line) . "\r\n";
}
fclose($source);
file_put_contents($argv[1] . '_'$output);
?>
Вызывается так:
php [scriptfile].php [filename]

Вывод будет в [filename]_
 
25.11.2013 22:02  
OlegON
Та ну... Мощь Linux, раз уж про grep заговорил...
test.txt - файлик, где второй колонкой через пробел идет телефон (как в варианте KirillHome)
Код:
cut -d' ' -f2 test.txt
если втупую "выкинуть все, кроме цифр" (вариант twix), то
Код:
sed -e 's/[^0-9]//g' test.txt
 
25.11.2013 23:04  
Tushkanchik
Во, вариант с sed самый просто оказался )))
 
25.11.2013 23:16  
OlegON
Ты просто неточно задачу описал... В наше время гигагерцев и гигабайт, народ забывает про оптимизацию решения. Regexp - не самое легкое. Если есть формат текста, то лучше cut.. На миллионах строк очень заметно будет.
 
25.11.2013 23:31  
twix
Цитата:
Сообщение от OlegON
Ты просто неточно задачу описал... В наше время гигагерцев и гигабайт, народ забывает про оптимизацию решения. Regexp - не самое легкое. Если есть формат текста, то лучше cut.. На миллионах строк очень заметно будет.
В задаче действительно не был указан формат входных данных. А так как нужны были только цифры, то вариант с примитивным отбраковыванием всего "нециферного" - самое простое решение. К тому же нет смысла заниматься оптимизацией алгоритма, который будет применён один раз. Лучше подождать лишних 30 секунд (минут), чем тратить часы на достижение быстрого выполнения скрипта.
 
25.11.2013 23:54  
KirillHome
"Поумствую" :)
Отбрасывание всего "нецифирного" замечательно, если не будет имён типа Иван1, Петр27 и т.д.
Если формат действительно таков - ИмяНомер, то, на мой взгляд, правильнее будет взять последние последние 11 цифр (возможно, 12, если номер записан не как 8...., а как +7.....) - номер могут записать и с пробелами, с дефисами, скобками и т.д.
 
26.11.2013 09:05  
Tushkanchik
Для моей задачи очень помогло. Нужно было из файла убрать все ФИО оставив только номера телефонов для смс рассылки.
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 21 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.
 
 
Опции темы



Часовой пояс GMT +3, время: 22:17.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.