Консультация № 171373
16.08.2009, 07:40
0.00 руб.
0 12 3
Приветствую !
Вопрос: Мне необходимо в текстовом документе в начале всех строк удалить по 19 знаков.
Подскажите программу или текстовый редактор, и как это можно сделать.
Спасибо.

Обсуждение

Неизвестный
16.08.2009, 09:24
общий
это ответ
Здравствуйте, Кучеров Пётр Павлович.
Могу предложить использовать программу Microsoft Word и применить макрос (в каждом абзаце удаляются первые 19 символов). Да, в тексте ваши строки должны быть оформлены как параграфы (абзацы).
Код:
Sub del_15Char()
'Удаление первых 19 символов у каждого абзаца (параграфа)
Const chSize = 19
Dim par As Paragraph
For Each par In ActiveDocument.Paragraphs
par.Range.Characters.First.Delete Unit:=wdCharacter, count:=chSize
Next par
End Sub
5
Неизвестный
16.08.2009, 09:25
общий
Думаю, нет такой) Разве что на Делфи или Си написать минут за 5)
Неизвестный
16.08.2009, 10:49
общий
Я такие вещи тоже с помощью макросов обычно делаю.
давно
Модератор
137394
1850
16.08.2009, 11:51
общий
Кучеров Пётр Павлович:
А текстовый документ в формате Word?
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Неизвестный
16.08.2009, 22:54
общий
Спасибо за отзывчивость!
Это у меня не прихоть, а мне необходимо анализировать Лог- файлы программы МИНИком DX :
08.08.2009 11:04:15 00>t ring 17
08.08.2009 11:04:15 00:ЖД Круги:
итак до 1000 строк с датой и временем, которые визуально мешают отображению информации.
Уважаемый Кокин Антон Вадимович, объясните заодно уж, "в тексте ваши строки должны быть оформлены как параграфы (абзацы).", и как применить макрос, если Вас не затруднит.
Спасибо за внимание к моей проблеме Сергею Луконину и Степашкину Дмитрию Валерьевичу.
ответ Megaloman: текстовый документ в "Блокноте", но можно открыть в любом текстовом редакторе, лишь бы я смог реализовать эту задачу.
Жду помощи !
Неизвестный
17.08.2009, 07:34
общий
Цитата: 256286
Уважаемый Кокин Антон Вадимович, объясните заодно уж, "в тексте ваши строки должны быть оформлены как параграфы (абзацы).", и как применить макрос, если Вас не затруднит.

Петр Павлович, чтобы более конкретно помочь вам, вышлите образец вашего лога мне по адресу: avkokin[@]gmail.com, и я посмотрю структуру файла и дам более точный ответ.
Ну, а в общем случае вам нужно проверить (если вы будете использовать Word), как отделены строки друг от друга и, если отделены знаком абзаца, то применяете макрос. Код макроса нужно скопировать и вставить в редактор кода (не документ Word), который вызывается сочетанием ALT+F11. Можете также почитать информацию об этом здесь.
Неизвестный
17.08.2009, 09:51
общий
если это текстовый файл, то можно открыть в Excel с разбивкой по колонкам (разделитель - пробел) и удалить ненужные колонки
давно
Модератор
137394
1850
17.08.2009, 11:00
общий
это ответ
Здравствуйте, Кучеров Пётр Павлович.
Ваш текстовый файл открывается блокнотом (так указано в мини-форуме). Поэтому позволю себе ответить
не совсем по теме рассылки -Пакет Microsoft Office . Предлагаю решение посредством VBS - скрипта. В принципе, он может быть использован
как макрос, например, в Excel, но не вижу в этом смысла.
Копируйте приведенный ниже скрипт в блокнот, сохраните в файл с расширением .vbs, например, reorg.vbs
в начале скрипта укажите имя своего текстового файла для обработки (с путём) - см. комментарии по тексту скрипта
Запускайте из проводника как обычный исполнимый файл (например, .bat или .exe)
Код:
' В Указанном текстовом файле удалим в каждой строке заданное кол-во символов в начале строки

InFile = "D:\Примеры файлов\Для убийства символов в начале строк.log" ' Путь к текстовому файлу
Ndele = 19 ' Cколько символов удаляем
InSave = 1 ' =0 -Не сохраним копию исходного файла, не 0 -сохраним

Set FSO = CreateObject("Scripting.FileSystemObject")

' Если надо сохранить исходный файл в .bak

If InSave <> 0 Then
On Error Resume Next
Set F1 = FSO.GetFile(InFile)
If Err.Number = 0 Then
F1.Copy InFile + ".bak"
F1.Close
End If
End If

On Error Resume Next
Set F1 = FSO.OpenTextFile(InFile, 1, False)

If Err.Number = 0 Then
Messa = CStr(Time) + " Открыт файл " + InFile + Chr(13) + Chr(10)
' Читаем исходный файл в массив
iString = F1.ReadAll()
F1.Close
iString = Replace(iString, Chr(10), "")
Mass = Split(iString, Chr(13))
iString = ""
N = UBound(Mass)

' Записываем результат в файл

Set F1 = FSO.OpenTextFile(InFile, 2, True)

For i = 0 To N
F1.WriteLine Mid(Mass(i), Ndele + 1, 9999)
Next

F1.Close
Messa = Messa + CStr(Time) + " Преобразование завершено"

Else
Messa = "Ошибка при открытии файла " + Chr(13) + Chr(10) + InFile + Chr(13) + Chr(10) + Err.Description

End If
L = MsgBox(Messa, 0, "Преобразование файла")
5
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Модератор
137394
1850
17.08.2009, 18:25
общий
Постоянно забываю возможность в MS Word помечать (и затем удалять, если хочется) прямоугольные участки текста. Вспомнил, как это делается мышью совместно с клавишами. В Вашем случае открываете файл, становитесь курсором мыши перед первым символом текста, удерживаете Alt+Shift, полосой прокрутки спускаетесь на самый конец файла, курсором мыши становитесь правее последнего удаляемого символа, при этом выделяется прямоугольный участок текста (столбец), отпускаете Alt+Shift и, далее, или клавиша Delete, или Ctrl-x, если надо столбец сохранить в буфер. Как полностью сделать это клавишами - не помню, редко таким пользуюсь.
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Неизвестный
17.08.2009, 19:26
общий
Приветствую вас неравнодушные люди!
Во - первых хочу поблагодарить за соучастие в моей проблеме.
Ссылка на файл для тех, кто хочет поэкспериментировать - http://files.mail.ru/TR42AF
Для Архипова Александра Леонидовича, - в Excel строка копируется - пишется сплошнойстрокой (извините за товтологию).
Для Megaloman - метод действенный, спасибо!
Деньгами не богат, но всем Большое человеческое спасибо.
Дай вам всем БОГ здоровья!
Неизвестный
18.08.2009, 06:10
общий
Кучеров Пётр Павлович:
а копировать не надо в Excel, надо открывать файл в Excel
Неизвестный
18.08.2009, 11:38
общий
это ответ
Здравствуйте, Кучеров Пётр Павлович.
Прочитал в минифоруме ваш комментарий:
Для Архипова Александра Леонидовича, - в Excel строка копируется - пишется сплошнойстрокой (извините за товтологию).
и решил предложить еще один вариант- достаточно простой и эффективный - решения вашей проблемы:
После того как вы открыли(или скопировали) в Excel ваши логи и они записались "сплошной строкой", т.е. расположились в столбце A, в ячейку B1 нужно вставить формулу "=ПСТР(A1;20;1000)"( смысл которой заключается в копировании содержимого ячейки, начиная с 20 позиции), после чего ее нужно размножить вниз до окончания данных в столбце А. после этого нужно выделить столбец B, выполнить операции "Копировать - Вставить значения" (чтобы избавиться от формул) и удалить столбец А.
После сохранения в файле останется только нужная вам информация.
Все.
Рад был помочь.
5
Форма ответа