Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программное обеспечение > Поиск слов по маске в файлах


Автор: Delphist 16.2.2010, 11:08
Привет, всем. Возникла необходимость в программе следующей функциональности. Нужно организовать поиск слов в файле согласно заданной маске. Например, есть файл или группа файлов, я в программе в поле искать пишу к примеру маску e-mail'ов: 
*@*.* - и программа находит все e-mail адреса в этих файлах.

Автор: Akina 16.2.2010, 11:15
По-моему, быстрее самому такое написАть - делов-то на десяток строк.

Автор: Delphist 16.2.2010, 11:17
Цитата(Akina @  16.2.2010,  12:15 Найти цитируемый пост)
По-моему, быстрее самому такое написАть - делов-то на десяток строк

я понимаю, что все можно самому, но должны же быть уже готовые решения, что по сто раз писАть одно и тоже

Автор: Delphist 16.2.2010, 12:42
Цитата(Akina @  16.2.2010,  12:15 Найти цитируемый пост)
По-моему, быстрее самому такое написАть - делов-то на десяток строк. 

если элементарно, то дал бы эти 10 строчек

Автор: Akina 16.2.2010, 13:33
Finder.vbs
Код

Option Explicit

Dim fn
Dim fso
Dim f
Dim s
Dim patt
Dim regEx
Dim Match
Dim Matches
Dim RetStr

Const ForReading = 1

fn = InputBox("Filename to search in?","Source file","c:\folder\filename.txt")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(fn, ForReading)
s = Replace(f.ReadAll,vbCRLF," ")
f.Close
patt = InputBox("Pattern to search for?","Pattern","\s\w+@\w+\.\w+\s")
Set regEx = New RegExp
regEx.Pattern = patt
regEx.IgnoreCase = True
regEx.Global = True
Set Matches = regEx.Execute(s)
For Each Match in Matches
   RetStr = RetStr & Match.Value & vbCRLF
Next
fn = InputBox("Filename to write to?","Destination file","c:\folder\filename.txt")
Set f = fso.CreateTextFile(fn, True)
f.Write RetStr 
f.Close

Автор: Samotnik 16.2.2010, 15:00
А чЕм тОтал коммАндер нЕ устрАивает ? 

Автор: Akina 16.2.2010, 15:05
Вероятно, тем, что он указывает факт наличия регэкспа в файле - но не более.

Автор: Delphist 16.2.2010, 16:57
Цитата(Akina @  16.2.2010,  16:05 Найти цитируемый пост)
Вероятно, тем, что он указывает факт наличия регэкспа в файле - но не более. 

Вообщем сворганил сам, кому нужно пользуйтесь

Автор: Delphist 16.2.2010, 16:59
Мне просто нужен был простой поиск e-mail'ов в любых файлах. Если кто знает где в нете можно  бесплатно выкладывать  свои проги на порталах типа freesoft, то выкладывайте супер BredMail smile  не стесняясь. А то я сегодня весь инет облазил, а подобной проги не нашел, поэтому на благо человечества и написал.

Автор: Akina 16.2.2010, 17:54
Спалившись на создании спамерских мэйл-БД, я бы на твоём месте так сильно не радовался...

Автор: bazilio77 16.2.2010, 20:26
Цитата(Delphist @ 16.2.2010,  11:08)
Привет, всем. Возникла необходимость в программе следующей функциональности. Нужно организовать поиск слов в файле согласно заданной маске. Например, есть файл или группа файлов, я в программе в поле искать пишу к примеру маску e-mail'ов: 
*@*.* - и программа находит все e-mail адреса в этих файлах.

Смотри классику

grep
awk

Автор: Delphist 16.2.2010, 23:35
Цитата(Akina @  16.2.2010,  18:54 Найти цитируемый пост)
Спалившись на создании спамерских мэйл-БД, я бы на твоём месте так сильно не радовался... 

Я не создатель спамерских майл-БД  smile

Добавлено @ 23:36
Цитата(bazilio77 @  16.2.2010,  21:26 Найти цитируемый пост)
grep
awk

А примерчик можно  smile 

Автор: Delphist 18.2.2010, 09:44
Цитата(bazilio77 @  16.2.2010,  21:26 Найти цитируемый пост)
grep
awk

bazilio77, мы все с нетерпением ждем вашего ответа.

Автор: Akina 18.2.2010, 09:51
http://www.google.ru/search?hl=ru&newwindow=1&q=grep+%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B&lr=&aq=f&oq=
http://www.google.ru/search?hl=ru&newwindow=1&q=awk+%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B&lr=&aq=f&oq=

Автор: Delphist 18.2.2010, 14:00
Цитата(Akina @  18.2.2010,  10:51 Найти цитируемый пост)
http://www.google.ru/search?hl=ru&neww...mp;aq=f&oq=
http://www.google.ru/search?hl=ru&neww...mp;aq=f&oq=

Пример для моей задачи как будет выглядеть???

Автор: Samotnik 18.2.2010, 14:41
хватит вам флейм разводить, эта задача решается на любом ЯП, за минут 20-30   smile 

Автор: bazilio77 18.2.2010, 21:44
Цитата(Delphist @ 18.2.2010,  09:44)
Цитата(bazilio77 @  16.2.2010,  21:26 Найти цитируемый пост)
grep
awk

bazilio77, мы все с нетерпением ждем вашего ответа.

http://ru.wikipedia.org/wiki/grep

Автор: Akina 18.2.2010, 22:49
Цитата(Samotnik @  18.2.2010,  15:41 Найти цитируемый пост)
задача решается на любом ЯП, за минут 20-30

ну где-то стоолько я и потратил

Автор: Delphist 19.2.2010, 15:50
Цитата(bazilio77 @  18.2.2010,  22:44 Найти цитируемый пост)
http://ru.wikipedia.org/wiki/grep 

ооо ну началось давление ссылками.  Я просил ПРИМЕР, а не ссылку.
Есть файл, нужно найти в нем все e-mail'ы, если ты шаришь в grep, напиши, пожалуйста, командную строку 


P.S. В итоге примера так и не будет, умными словами покидались - "а воз и ныне там"

Автор: comcon1 19.2.2010, 16:02
Цитата(Delphist @  19.2.2010,  15:50 Найти цитируемый пост)
если ты так шибко шаришь в grep
 вообще-то на этом форуме процентов 90 пользователей "шибко шарят в греп"... 


grep "ТВОЕ_РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ" "ТВОЯ_МАСКА_ФАЙЛОВ" -ho

Автор: Delphist 19.2.2010, 16:04
Цитата(comcon1 @  19.2.2010,  17:02 Найти цитируемый пост)
grep "ТВОЕ_РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ" "ТВОЯ_МАСКА_ФАЙЛОВ" -ho

хорошо есть файл my_file.exx необходимо найти E_MAIL адреса -  что я должен написать в командной строке

Добавлено @ 16:06
Все ждем от bazilio77 или comcon1 примера.

Добавлено @ 16:08
Цитата(comcon1 @  19.2.2010,  17:02 Найти цитируемый пост)
вообще-то на этом форуме процентов 90 пользователей "шибко шарят в греп"... 

откуда такая статистика  smile 

Автор: Delphist 19.2.2010, 17:28
чую ждать придется долго smile 

Автор: SABROG 28.2.2010, 16:55
Цитата(Delphist @ 19.2.2010,  17:28)
чую ждать придется долго smile

Держи вот регулярочку: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

Автор: Delphist 1.3.2010, 10:03
Цитата(SABROG @  28.2.2010,  17:55 Найти цитируемый пост)
Держи вот регулярочку: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html 

Что-то не понял, что же я все-таки должен написать в командной строке, чтобы найти e-mail'ы, вот так что-ли  smile :
Код

grep (?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ 
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
 \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
 \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
 \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)