Удаление Строки Visual Basic

Тема в разделе "Visual Basic", создана пользователем mops0000, 6 мар 2012.

Статус темы:
Закрыта.
  1. mops0000

    mops0000 Гость

    есть файл в котором более 2 миллионов строк(логи)(весит 361 мб). Нужно, чтобы удалялись строки содержащие определенное слово. Я написал вот такой скрипт в Visual Basic:

    Код (LotusScript):
    sub newmacros
    dim v as range
    dim x as long
    set v = activedocument.range
    for x = 1 to 2500000
    with v.find
    .text = "Слово1"
    if .execute then
    v.select
    selection.bookmarks("\line").select
    selection.delete
    end if
    end with
    next
    end sub
    но в ворде данный документ не открывается, чтобы применить скрипт. Пробывал скачивал несколько редакторов: SciTE, EmEditor, но они почему то пишут, что во второй строке ошибка(нет закрывающего определения).
    Посоветуйте, чем открыть файл, чтобы можно было применить данный скрипт и как дописать скрипт, чтобы указать можно было несколько слов сразу, и чтобы удалялись строки, в которых эти слова расположены?
     
  2. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Файл - обычный текстовый или doc? Если просто текст, лучше написать отдельную программку, которая этот файл сама переработает, т.е. обойтись без сторонних текстовых редакторов (им 300 с гаком метров реально тяжело сжевать).
    Если у вас имеется Powershell (в семерке и висте он вроде сейчас по умолчанию), то в нем выполнить что-то типа такого:
    Код (Text):
    $logs_file = "d:\logs\log.txt"
    $filtered_log_file = "d:\logs\filtered_log.txt"
    cat $logs_file | where { !($_ -match "Слово1|Слово2|Слово3") } | out-file -filepath $filtered_log_file
    Здесь log.txt будет файлом с логом, в filtered_log.txt сложится отфильтрованный лог, ключевые слова понятно куда вписывать.
     
  3. alex77755

    alex77755 Well-Known Member

    Регистрация:
    15 фев 2009
    Сообщения:
    128
    Симпатии:
    0
    но в ворде данный документ не открывается,

    и не надо если лог текстовой. Примерно так:


    Код (LotusScript):
    Private Sub Комманда1_Click()
    Dim fso, fs1, f1, i, n, st
    Dim mas_st(10)
    Set fso = CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    Set fs1 = fso.GetFile("C:\base.txt")
    Open "C:\out.txt" For Output As 1
    'проверка наличия файла
    If Not fs1 = Empty Then
    Set f1 = fs1.OpenAsTextStream(1)
    'чтение всего файла построчно
    Do While Not f1.AtEndOfStream
    st = f1.ReadLine
    If InStr(1, st, "слово") = 0 Then Print #1, st
    Loop
    End If
    Close #1
    End Sub
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей