2013-02-13 3 views
-2

Мне нужно скопировать каждую строку документа, содержащую слова «make», «model», «year». Слова всегда будут рядом друг с другом. Мне понадобится каждая строка, которая будет помещена в новый файл с именем ahk-output.txt.с использованием autohotkey для разбора текстового файла

т.е. исходные данные:

модель Honda модели гражданской года 2012

вывода в файл:

Honda Civic - 2012

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

Loop, read, C:\Users\vangp.ENTERPRISE\Documents\*.txt, C:\ahk-output.txt 
{ 
    IfInString, A_LoopReadLine, model, FileAppend, %A_LoopReadLine%`n 
} 
{ 
    IfInString, A_LoopReadLine, year, FileAppend, %A_LoopReadLine%`n 
} 
{ 
    IfInString, A_LoopReadLine, marketing name, FileAppend, %A_LoopReadLine%`n 
} 
+0

«гарантирован быть в топе 30 строк» ​​Означает ли это, что эти слова не будут появляться после 30 строк, не следует менять после 30 строк (даже если найдено) или будут в первых 30 строках наверняка, и может появиться за пределами первых 30 строк, где они также должны быть изменены? –

+0

Информация будет в первых 30 строках. Я не хочу, чтобы скрипт тратил время на поиск всего файла, так как данные, которые я хочу, будут не ниже, чем 30 лучших строк. – user2005562

+0

Просьба представить некоторые отзывы о предлагаемом решении, и ответ был полезен, а затем, пожалуйста, «Примите» этот ответ. Спасибо! –

ответ

0

Я решил помочь вам, так как никто другой не ответил. Вот простое начало, измените содержание вашего сердца.

FileDelete, C:\Temp\Results\Extracted.txt 
Loop, C:\Temp\Source\*.txt 
{ 
    Loop, read, C:\Temp\Source\%A_LoopFileName% 
    { 
     IfInString, A_LoopReadLine, model 
     { 
      StringReplace, CurrentLine, A_LoopReadLine, model, %A_Space% 
      StringReplace, CurrentLine, CurrentLine, year, %A_Space% 
      StringReplace, CurrentLine, CurrentLine, marketing name, %A_Space%-%A_Space% 
      FileAppend, %CurrentLine%`n, C:\Temp\Results\Extracted.txt 
     } 
     If (A_Index >= 30) 
      Break 
    } 
} 
+0

Большое вам спасибо. – user2005562

Смежные вопросы