1 (изменено: shveicar, 2012-03-25 15:36:32)

Тема: AHK: извлечение данных из текстового файла

Здравствуйте, 
Программа adobe dreamweaver - проверяет сайт на наличие ссылок, результат можно увидеть в текстовом файле, вида

Неработающие ссылки:
 
index_splash.htm    ../silginc.com/index.htm
members/220_2.htm   images/newmenu__hover_01.jpg
members/6145_221.htm   images/newmenu__hover_01.jpg
members/6145_221.htm   6145_2f-6142-01-sm.jpg
members/6145_221.htm   6145_2f-6142-01-lg.jpg
 
Внешние ссылки:
 
2257.htm   mailto:info@sexentertain.co
index_splash.htm   http://www.google.com/
 
 
Потерянные файлы:
 
images/235.jpg

каждый из списков,- может быть очень длинным, (привожу краткое содержание) но структура - всегда одинакова. Проблема заключается в дальнейшей обработки этого файла. Хочется  ускорить процесс извлечения из файла полезной информации, а именно: фрагмента после надписи (Неработающие ссылки: ) причем только начальных строк до (.htm)или до (html) и всего блока до надписи (Внешние ссылки: )  и если возможно, добавить ещё - опцию удаления одинаковых строк, (сохраняется только одно совпадение) в итоговом (отдельном) файле вывода.
AHK может помочь в данном вопросе, или лучше обратиться к vbs? Работаю из под total commander. Надеюсь на помощь.
Спасибо.

2

Re: AHK: извлечение данных из текстового файла

Array:=[], Pattern:="([\.\/\-\d\w]+).html?"
Content=
(
Неработающие ссылки:

index_splash.htm    ../silginc.com/index.htm
members/220_2.htm   images/newmenu__hover_01.jpg
members/6145_221.htm   images/newmenu__hover_01.jpg
members/6145_221.htm   6145_2f-6142-01-sm.jpg
members/6145_221.htm   6145_2f-6142-01-lg.jpg

Внешние ссылки:

2257.htm   mailto:info@sexentertain.co
index_splash.htm   http://www.google.com/


Потерянные файлы:

images/235.jpg
)

StringSplit, FirstSplit, Content, `:
StringSplit, SecondSplit, FirstSplit2, % "`n"A_Space
Loop, % SecondSplit0
   If RegExMatch(SecondSplit%A_Index%, Pattern, Match)
   {
      For Key, Value In Array
         If % Match1=Value
            Array.Remove(Key)
      Array.Insert(Match1)
   }
For Key, Value In Array
   Result.=Value "`n"
Loop, % SecondSplit0
   If RegExMatch(SecondSplit%A_Index%, Pattern, Match)
      ResultList.=Match "`n"
MsgBox, 262144, % " ", % "after sampling:`n`n"Result
                     . "`nfrom list:`n`n"ResultList

3

Re: AHK: извлечение данных из текстового файла

Array:=[], Pattern:="([\.\/\-\d\w]+).html?"
ReadingFile:=FileOpen(A_ScriptDir "\From.txt", "r", "UTF-8")
WritingFile:=FileOpen(A_ScriptDir "\Into.txt", "w", "UTF-8")
Content:=ReadingFile.Read()
ReadingFile.Close()

StringSplit, FirstSplit, Content, `:
StringSplit, SecondSplit, FirstSplit2, % "`n"A_Space
Loop, % SecondSplit0
   If RegExMatch(SecondSplit%A_Index%, Pattern, Match)
   {
      For Key, Value In Array
         If % Match1=Value
            Array.Remove(Key)
      Array.Insert(Match1)
   }
For Key, Value In Array
   WritingFile.Write(Value "`r`n")
WritingFile.Close()

4

Re: AHK: извлечение данных из текстового файла

Спасибо, буду разбираться.