Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » TextPipe

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Открыть новую тему     Написать ответ в эту тему

superkatya



Катька - смутьянка
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Поиск лекарств ведётся исключительно в разделе «Варезник».
TextPipe Pro
Текущая версия: 12.0 (06.06.2022)

Официальный сайт

 
Поддерживаемые ОС: Windows 10, 8, 7, Vista, 2019/2016/2012/2008/2003, x86 и x64
 
Скачать пробную версию в ZIP / в виде EXE-setup (27.5 МБ) / Список изменений
 
TextPipe Pro - утилита для пакетной обработки текстовой информации. Программа служит для форматирования и конвертирования текстовых файлов, замены в них текста, выполнения сложных преобразований, конвертирования текста из одного формата в другой.
Некоторые возможности TextPipe Pro:
• Пepepaбoтaнный пoиcк и зaмeнa в cooтвeтcтвии с заданной cxeмой. Причём можно задать как абсолютно идентичные cooтвeтcтвия, так и c нeчёткoй лoгикoй coпocтaвлeния (для иcпpaвлeния oбщeизвecтныx oшибoк нaбopa).
• Сортировка текста по алфавиту, рандомизация строк, подсчёт и удаление дублирующихся строк.
• Добавление и(или) извлечение определённых слов, строк или частей текста, как введённых вручную, так и содержащихся в любом другом текстовом файле.
• VBScript или JScript (или PerlScript, PythonScript, REXXscript и т.д.) фильтpы мoгyт быть oпиcaны c нacтpoйкoй для oбpaбoтки кaждoгo пoля.
• Пpeoбpaзoвaниe cимвoлoв кoнцa cтpoки мeждy фopмaтaми Unix, Mainframe, DOS и Macintosh.
• Преобразование текста в список слов.
• Иcпpaвлeниe зaглaвнocти бyкв (нaпpимep, sImon -> Simon), несколько видов смены регистра текста.
• Удaлeниe пpoбeлoв в нaчaлe, в кoнцe cтpoк, и yдaлeниe мнoжественных пробелов.
• Удaлeниe тэгoв HTML и XML или только их атрибутов.
• Дoбaвлeниe нyмepaции cтpoк, лeвoгo и пpaвoгo пoлeй, зaгoлoвкoв и cнocoк.
• Дoбaвлeниe или yдaлeниe cтoлбцoв тeкcтa, дoпoлнитeльныx cтpoк.
• Дoпoлнeниe или yceчeниe дaнныx пoлeй дo определённой шиpины.
• Извлeчeниe aдpecoв элeктpoннoй пoчты и URL и мнoгoе мнoгoe дpyгoe...


Полезные обучающие статьи по программе:
  • тут

    Программы аналогичного назначения:
  • PowerGrep

  • Всего записей: 3232 | Зарегистр. 01-06-2001 | Отправлено: 12:58 23-06-2004 | Исправлено: vasevase, 04:43 06-04-2023
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PaulAr
     
    Держите: http://rgho.st/8XP8MYSfS
    Там могли присутствовать некоторые подводные камни, так что если опыт в VB минимальный, то могли бы долго ходить по граблям.
    Подайте на этот фильтр свой подготовленный стринг.
     
    З.ы. и да, после Excel пришлось немного адаптировать код.
     
    З.З.Ы. На всякий случай VB-код оставлю здесь:
     
    Подробнее...

    Всего записей: 1328 | Зарегистр. 03-03-2008 | Отправлено: 00:13 30-06-2017 | Исправлено: Romul81, 00:23 30-06-2017
    PaulAr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81
     
    СПАСИБО огромное за скрипт.
    Просто вставил его в конце своего фильтра и он выдал 100% необходимый результат!!!!
    Я просто поражен, что без дополнительного шаманства скрипт (который я еще не до конца понял как работает, но обязательно разберусь) работает как надо.  
    Romul81 я готов ваш труд (я бы потратил не меньше недели) задонатить.
    Приятно иметь дело со специалистом.  
    Спасибо.

    Всего записей: 6 | Зарегистр. 09-11-2008 | Отправлено: 09:50 30-06-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PaulAr
     
    Да ладно. Достаточно такой благодарности, дабы потешить самолюбие
     
    По скрипту. Если охота разобраться, то несколько комментариев.
     

    Код:
     Function processLine(line, EOL)  
       
        Dim inputLn  
        Dim inputLnArr  
        Dim lb  
        Dim toDuplicate  
        Dim outputStr  
       
        toDuplicate = False ' Boolean значение, обозначающее нужно или нет копировать линию
        inputLn = line ' входящая линия текста
        inputLnArr = Split(inputLn, ";") ' конвертируем её в массив, используя в качестве разделителя точку с запятой
         
        lb = LBound(inputLnArr) ' нижняя граница массива
            ' по стандарту = 0, но может быть и 1
            ' дабы избежать возможных проблем предусмотрим оба варианта
         
        For i = lb To UBound(inputLnArr) ' итерация по массиву в цикле
            If i = lb + 8 Then ' находим последний элемент, который нужно проанализировать
                If Trim(inputLnArr(lb + 5)) <> Trim(inputLnArr(lb + 7)) Or _  
                        Trim(inputLnArr(lb + 6)) <> Trim(inputLnArr(i)) Then ' производим логическое сравнение элементов массива
                        ' используем Trim, чтоб сравнивать именно значения, без учёта пробелов
                    toDuplicate = True ' при выполнении условия отмечаем линию для копирования
                    inputLnArr(lb + 7) = Left(Trim(inputLnArr(lb + 5)) & Space(Len(inputLnArr(lb + 7)) - Len(Trim(inputLnArr(lb + 5)))), _  
                            Len(inputLnArr(lb + 7))) ' заменяем значения в элементах массива, попутно вычисляя необходимую длину символов элемента,
                            ' добавляя необходимое кол-во пробелов справа, чтоб соблюсти длину линии
                    inputLnArr(i) = Left(Trim(inputLnArr(lb + 6)) & Space(Len(inputLnArr(i)) - Len(Trim(inputLnArr(lb + 6)))), _  
                            Len(inputLnArr(i)))  ' то же самое для другой пары элементов
                End If  
            End If  
        Next  
         
        If toDuplicate Then ' если линия помечена для копирования
            outputStr = inputLn & EOL & Join(inputLnArr, ";") & EOL ' добавляем к оригинальной линии перевод строки и приводим наш модифицированный массив к стрингу с разделителем в виде точки с запятой
        Else  ' иначе
            outputStr = TextPipe.subFilterEntireText(line & EOL) ' результат равен входящей линии + перевод строки
        End If  
        processLine = outputStr  ' возвращаемый функцией результат
     
     End Function

     
    Добавлено:
    З.Ы. Хотя, на самом деле цикл здесь и не нужен. Можно сразу приступить к анализу и изменению массива, без необходимости его итерировать.
     
    Добавлено:
    З.З.Ы. Было бы также неплохо проверить верхнюю границу массива, дабы убедиться, что элементы, которые мы собрались анализировать существуют. Иначе была бы ошибка. Но цикл как раз и решает эту проблему.
     
    Т.е. другими словами. Или оставить цикл, или проверять UBound.

    Всего записей: 1328 | Зарегистр. 03-03-2008 | Отправлено: 10:16 30-06-2017 | Исправлено: Romul81, 10:16 30-06-2017
    PaulAr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81
     
    Я в данный момент ищу толковое объяснение команд чтобы понять какие значения принимают переменные (в частности lb) и тут вы показываете фокус под названием "чтение мыслей на расстоянии". Это чудо и по другому назвать сложно (метот дедукции не предлагать).
     
    Надеюсь эти знания позволят мне сократить мой фильтр с 282 строк (с коментариями) до 2-х 3-х десятков строк или меньше
    СПАСИБО!!!!

    Всего записей: 6 | Зарегистр. 09-11-2008 | Отправлено: 10:38 30-06-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В порядке полезной информации для расширения функциональности TP и, в частности, скриптинг-фильтра. Вкратце ситуация следующая. Фильтр может задействовать любой скриптовой язык, доступный через интерфейс WSH. Более развёрнутая информация в английской вики.
    Проблема заключается в том, что при использовании любых из следующих Script Language:

    • JScript
    • JavaScript
    • ECMAScript

    задействуется встроенный JScript в версии 5.8 (по крайней мере в Win 8.1). Эта версия реализации MS соответствует ECMAScript 3 (ECMA-262 3rd edition / JavaScript 1.5), разработанная в лохматом 2000-м году. Да, даже в этой версии производительность несколько выше, чем у другого встроенного скриптового языка - VBScript. Но, если в системе есть IE 9+ и, соответственно, новый интерпретатор Chakra, то зачем платить больше? Новый движок на порядки быстрее и полностью поддерживает ES5 (ECMA-262 5th edition / JavaScript 1.8.1) плюс частично ES6. Не то, чтобы эти стандарты были так уж очень нужны, но, как уже было сказано, новый движок гораздо быстрее и плюс к тому, появляется поддержка таких удобных методов как forEach, indexOf, reduce и др. для массивов и такая базовая вещь как trim для String.
     
    OK, понятно, Chakra лучше. Но как задействовать?
     
    1. Применить твик реестра из этого поста. Правда, в моём случае на двух машинах с Win 8.1 для первых двух ключей (ProgID) значения пришлось вносить вручную, предварительно пошаманив с правами на запись. Вкратце - сначала нужно добавить себя в Auditing, затем стать владельцем и задать полный доступ. После изменения вернуть всё взад (хотя, наверное, можно и не возвращать).
     
    2. В TP в графе Script Language вместо JScript указать Chakra. В поле для кода поместить тестовый скрипт Проверить - нажать кнопку "Check Script". Если ОК - Chakra подключилась.
     
    Бинго! Теперь можно писать код обработки, совместимый с ES5.
     
    Добавлено:
    З.Ы. Есть ещё такая мулька как node-chakracore - форк Node.js на движке chakra с открытым исходным кодом (вместо V8). Полная поддержка ES6. Но по WSH недоступен. Подключается с помощью JSRT API, но так и не разобрался, как прикрутить. Инфа здесь.

     
    EDIT
     
    Практика, как известно, является критерием истины. И после тестирования методов ES5 в TP на практике выяснилось, что даже в случае использования движка Chakra эти самые методы не поддерживаются. Почему - непонятно.
    Немного теории. Все "родные" dll-ки, относящиеся к WSH в моей системе имеют версию 5.8.9600.16384. jscript.dll - библиотека, отвечающая за одноимённый скриптовый язык, той же версии, и соответствует, как говорилось выше ECMAScript-262 3rd edition / JavaScript 1.5.
    Путём вышеописанных манипуляций с реестром мы смогли задействовать более новый движок Chakra, завязанный на установленную в систему библиотеку jscript9.dll, которая не смотря на цифру 9 в своём названии имеет версию 11.00.9600.18347, которая в свою очередь, соответствует установленной версии Internet Explorer. Известно, что этот браузер начиная с 9-й версии поддерживает ES5. По крайней мере для 11-й это даже не обсуждается. При этом, по какой-то причине, при вызове по WSH новые методы не работают. Также, специально оговорюсь, что нет сомнений в том, что подключилась именно Chakra, т.к. выводил результат функций ScriptEngineMajorVersion() + ScriptEngineMajorVersion() + ScriptEngineBuildVersion() - всё верно, отрабатывает именно 11-я версия. Тем не менее не выходит каменный цветок ((
     
    Но в виду наличия здравой (в основном) настырности и нежелания "проигрывать", пришлось-таки найти выход.
    По мотивам этого поста (ахтунг! - японский) и с использованием кода из JScriptExtender в скрипт для TP был имплантирован ES5-shim, добавляющий те самые искомые методы. При этом JSON и "some additional functions" добавлять не стал за ненадобностью.
     
    Дополнительным бонусом такого решения является то, что шим можно использовать и со старой версией JScript, если кому в лом возиться с подключением Chakra - новые методы будут работать. Но, всё-таки Chakra лучше хотя бы потому, что быстрее в два раза.
     
    Запостил на pastebin код, чтоб не потерялось.
    Вычлененный ES5 Methods shim (src)
    Он же в сжатом виде (min).
    Код для подключения в TP с целью тестирования. В скрипте тестируются новые методы с выводом результата в alert.
     
    TextPipe JScript ES5 filter - скрипт шаблон, готовый для написания вашего кода обработки. Можно назначить по умолчанию для текущего скриптового языка, нажав кнопку "Set default". Повторюсь, использование Chakra факультативно.
     
    Еще, наверное, нужно отметить, что патчинг методов происходит только при первом запуске скрипта в рамках одной обработки ("job"). Т.е. не нужно переживать, что шим будет запускаться на каждой строке обрабатываемого текста.

     
    EDIT 2
     
    Нашёл гораздо более компактный и, по всей видимости, более быстрый шим - augment.js. Для наших целей - то, что нужно.
    Новый шаблон для TP - TextPipe JScript ES5-augment filter

    Всего записей: 1328 | Зарегистр. 03-03-2008 | Отправлено: 12:41 06-07-2017 | Исправлено: Romul81, 02:11 08-07-2017
    SFC



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81
    Спс
     
    а возможно ли без скриптов, в синтаксисе TP решить такую задачу:
     
    Один фильтр:  
    первое встреченное в строке слово TAB заменить на знак табуляции. последующие слова TAB в этой строке игнорировать.
     
    Второй фильтр:
    если в строке нет слова TAB то заменить на знак табуляции первое встреченное  
     в этой строке слово NOTAB. последующие слова NOTAB в этой строке игнорировать.

    ----------
    [ offline ]

    Всего записей: 1663 | Зарегистр. 21-01-2003 | Отправлено: 08:10 07-07-2017 | Исправлено: SFC, 08:10 07-07-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SFC
     
    Если я правильно понял задачу, то можно.  
    Фильтр
    Предполагается, что слова TAB и NOTAB отдельностоящие, т.е. находятся по \b(?:NO)?TAB\b.

    Всего записей: 1328 | Зарегистр. 03-03-2008 | Отправлено: 10:13 07-07-2017 | Исправлено: Romul81, 10:14 07-07-2017
    SFC



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81
    Спс, оказывается все просто. У вас похоже версия новее чем моя 9.7.3 из варезника. Но смысл понятен. Спс.

    ----------
    [ offline ]

    Всего записей: 1663 | Зарегистр. 21-01-2003 | Отправлено: 11:30 07-07-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SFC

    Цитата:
    У вас похоже версия новее чем моя 9.7.3 из варезника.

    Не-не, та же самая ))

    Всего записей: 1328 | Зарегистр. 03-03-2008 | Отправлено: 11:33 07-07-2017
    SFC



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    у меня листинг другой получается. А этот листинг как то ипротрируется? - а то я вручную набирал

    Всего записей: 1663 | Зарегистр. 21-01-2003 | Отправлено: 11:35 07-07-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SFC
    Я листинг просто чуть сократил...

    Цитата:
    А этот листинг как то ипротрируется?

    Как-то пробовал - не получается ((

    Всего записей: 1328 | Зарегистр. 03-03-2008 | Отправлено: 11:40 07-07-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обновил свой пост по поводу движка Chakra и ES5 в JScript. Прежняя информация верна лишь частично. Но выход, вроде, найден))

    Всего записей: 1328 | Зарегистр. 03-03-2008 | Отправлено: 00:58 08-07-2017
    SFC



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А никому не попадался скрипт, который приводит HTML к красивому читабельному виду, типа как в таком сервисе или аналогичных.

    ----------
    [ offline ]

    Всего записей: 1663 | Зарегистр. 21-01-2003 | Отправлено: 20:15 23-07-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SFC
     
    Если речь идёт о том, чтоб обработать одну или несколько изолированных страниц, то этот функционал есть в некоторых тектсовых редакторах, напр. PSPad (задействован HTML Tidy). Либо в виде плагинов напр. HTML-CSS-JS Prettify или HTMLBeautify для  
    Sublime Text (для первого должен быть установлен node.js). Можно юзать, также, к примеру, оффлайн-страницу - подходящий вариант html-beautifier.
     
    Если файлов много, то можно воспользоваться одной из специальных библиотек (обычно под node.js или python). Например JS Beautifier. Не смотря на название, он поддерживает весь комплект - HTML/JS/CSS. В онлайне находится здесь. Собственно, большинство beautifier-ов и pretty-printer-ов на нём и строятся. Можно, также, банально батником пройтись с HTML Tidy. Конфу просто для реформата можно подсмотреть в том же PSPad (или нагуглить).
     
    Теоретически, весь этот зоопарк можно прикрутить к TP, с использованием фильтра "Run external program" - как-то экспериментировал на эту тему - вполне рабочее решение.
     
    В общем, варианты есть, подбирайте то, что больше подходит под ваши нужды.
     
     

    Всего записей: 1328 | Зарегистр. 03-03-2008 | Отправлено: 00:38 24-07-2017
    SFC



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81
    про Tidy батники я и забыл совсем. Я думал уже и TP появился какой-нибудь готовый фильтр.
    Спс за всю инфо

    ----------
    [ offline ]

    Всего записей: 1663 | Зарегистр. 21-01-2003 | Отправлено: 10:19 24-07-2017
    adib777

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подробнее...
    Помогите составить регулярное выражение для поиска и замены:
    Нужно добавить ВСЕГО один символ в определённой строке:
    ДО:

    Код:
    <td class="postcolor" id="post1234567890"><video src="../../www.youtube.com/watch@v=aBc159XyZ" controls="controls" width="560" height="315" >                      <br><br>-----<br><a href="topic.php@forum=1&topic=75" target="_blank">Это происходит потому что</a></td>

     
    ПОСЛЕ:

    Код:
    <td class="postcolor" id="post1234567890"><video src="../../www.youtube.com/watch@v=aBc159XyZ" controls="controls" width="560" height="315" />                      <br><br>-----<br><a href="topic.php@forum=1&topic=75" target="_blank">Это происходит потому что</a></td>

     
     
    То есть: нужно закрыть тег [<video src=], заменив ТОЛЬКО ПЕРВЫЙ ВСТРЕЧНЫЙ [>] на [/>]
    Остальной код может быть иным (адреса, форматирование, текст ), но каким бы он ни был, всё остальное должно оставаться НЕ тронутым. [/more]

    Всего записей: 17 | Зарегистр. 03-09-2017 | Отправлено: 22:46 10-09-2017 | Исправлено: adib777, 23:26 10-09-2017
    evoroz



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    adib777
    Чтобы заменить только первый встречный символ - есть соответствующий чек-бокс.
    А дальше вам надо определить чем так уникально место замены.
    Например: height="315" > описать как height="\d\d\d" > и написать замену. Фильтр Find Pattern (Perl style).
    В выделенном вами месте > встречается второй раз.

    Всего записей: 3487 | Зарегистр. 30-03-2002 | Отправлено: 09:25 11-09-2017
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    evoroz
    Я так думаю, adib777 просто так выразился (не совсем точно) по поводу "первого раза". Имелось в виду, имхо, что нужно привести тег video к xhtml.
    Как бы там ни было, уже ответил в теме по PowerGrep.

    Всего записей: 1328 | Зарегистр. 03-03-2008 | Отправлено: 10:20 11-09-2017
    adib777

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81
     
    Спасибо большое за ответ!!!
     
    Ваше решение подошло к обеим программам, с поправкой для TextPipe:
    в поле ЗАМЕНИТЬ нужно поставить:

    Код:
    $0 /

     
    Интересно ещё кое что: в тот вечер я сам пытался найти решение и прочитав инструкцию к регулярным выражениям, я думал, что мне поможет следующее:
     
    Найти:

    Код:
    (?<=video[^>]*)>

     
    Заменить:

    Код:
    />

     
    Однако TextPipe ругался:
    Lookbehind assertion is not fixed lenght
     
    А вот PowerGrep - (после пары правок) сделал всё так, как я хотел. Да и интерфейс его - для меня более удобочитаем, чем у TextPipe, если честно.

    Всего записей: 17 | Зарегистр. 03-09-2017 | Отправлено: 19:15 11-09-2017
    evoroz



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    adib777
    <video(.*) > заменить на <video$1 /> с галочкой в Replace first only

    Всего записей: 3487 | Зарегистр. 30-03-2002 | Отправлено: 09:46 12-09-2017
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

    Компьютерный форум Ru.Board » Компьютеры » Программы » TextPipe


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru