Ru-Board.club
← Вернуться в раздел «Программы»

» TextPipe

Автор: DrAlexMD
Дата сообщения: 11.12.2014 11:40
evoroz
Понял идею, ну, хотя бы так. Можно все строки объединить в один файл с новой строки и сразу поставить опцию "добавить расширение bat".

Но проблема в том, что найденный текст не передается последнему фильтру записи (insert lines). Ставлю переменный $1 - он ее ловит, как текст.

P.S. Кстати, "insert lines" - тоже не работает, наверное из-за того, что файла еще нет. Я заменил на "add header" и записалось. Но опять же проблема - не передается текст.
Автор: distortion
Дата сообщения: 14.12.2014 15:08
Подскажите, пожалуйста, с конфигурацией фильтра на удаление блока текста, содержащего строку. Блок выделяется пустыми строками сверху и снизу. Ниже пример, в котором нужно удалить средний блок, т.к. содержит выделенный текст:

isolation_full HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\F53DDAD8EC9481D4EAD631D51D057EF4\Patches
Value=AllPatches
REG_MULTI_SZ~13D3E7FD9A79FD641A186A8D0E2852A5#2300#2300

isolation_full HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\FF3410A05BCE06942A0ECD1305BABB0E\Features
Value=MainApp
REG_SZ~p}&J!T.8PA^Bt@YoqWW[#2300
Value=PP_Programs
REG_SZ~#2302MainApp#2300

isolation_full HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\FF3410A05BCE06942A0ECD1305BABB0E\Patches
Value=AllPatches
REG_MULTI_SZ~C192DAEEEBCA6BD4F9BC3CE086342F73#2300#2300
Автор: evoroz
Дата сообщения: 14.12.2014 18:46
distortion
Простой вариант: Remove -> Remove lines -> Remove matching lines
В поле вписываешь PP_Programs
Ниже этого поле контент строк там ставишь 3 и 1, т.е. 3 до и 1 после. Но это сработает, если как в твоем случае 3 и 1. Для универсального случая надо писать регулярку.

Автор: evoroz
Дата сообщения: 15.12.2014 00:18
Подумал и пришел к выводу, что регулярное выражение тут не напишешь.
Если групп строк много - становится непонятно, как выделить те, которые не нужны.
Думаю, уже нужно писать специальную программу.
Формально говоря, если твердо знать, что впереди 3 строки, кот. надо удалить, и одна сзади - фильтр выше прокатит. Если впереди две строки - удалится пустая строка, но пустая строка останется ниже.
А вот вариант если 2 выше 2 ниже - уже все будет испорчено. Т.е. если входной массив гарантированно имеет вид 3-1 или 2-1, то фильтр прокатит. При 3-1 будет две пустые строки - но одну из них убрать элементарно.
Автор: Anansis
Дата сообщения: 09.01.2015 11:18
distortion
Если еще актуально, попробуйте такой фильтр:
Replace > Find pattern (perl style)
Текст фильтра:

Цитата:
\r\n\s*\r\n.*PP_Programs.*\r\n\s*\r\n

Replace with:

Цитата:
\r\n\r\n


Настройки фильтра ('...' рядом с комбобоксом):
Default match length: Shortest (minimal) match (non-greedy)
'.' matches new line - включена
Автор: regga5
Дата сообщения: 14.02.2015 00:24
Здравствуйте. Подскажите пожалуйста схему для поиска цифр в строке.

Ситуация.
Есть строка типа


Цитата:
piece 478694 world


Нужна схема для определения 478694.

На выходе должно выйти (после удаления участка)


Цитата:
piece world


Спасибо.
Автор: sikemo
Дата сообщения: 14.02.2015 00:28
(.+)(?:\s\d{6}\s)(.+)
\1\3

? (предполагаю числовую строку в 6 символов)
Автор: evoroz
Дата сообщения: 14.02.2015 02:25
regga5
Для шести цифр можно: \d{6}\s
Любое кол-во цифр: ([0-9]+)\s
Replace -> Find pattern (Perl style)
\s в конце - чтобы убрать пробел
Автор: regga5
Дата сообщения: 14.02.2015 13:27
sikemo
evoroz

Спасибо.

Как дописать схему, что бы под нее попадали цифры больше 3-значных.

Random 343 world
>
Random 343 world


Random 1234 world
Random world

Спасибо за помощь.
Автор: evoroz
Дата сообщения: 14.02.2015 13:33
regga5
([0-9]+){4,}\s
Автор: regga5
Дата сообщения: 14.02.2015 14:14
Спасибо!
Автор: regga5
Дата сообщения: 15.02.2015 19:27
И еще, как удалить строки, в которых только 1-2 слова?
Автор: evoroz
Дата сообщения: 15.02.2015 20:17
Если предположить, что в слове только буквы английского алфавита и слова разделяются пробелом:
[a-zA-Z]+ [a-zA-Z]+ [a-zA-Z]+
[0-9a-zA-Z]+ если в слове есть цифры
НО!: фильтр Remove -> Remove lines -> Remove non-matching lines

Схема Perl
Автор: regga5
Дата сообщения: 15.02.2015 20:20
Спасибо.

А с кириллицей какая схема?

Есть

мир
world
мNр
world123
world is
мир это

все должно подходить под схему.
Автор: evoroz
Дата сообщения: 15.02.2015 20:21
Навскиду не тестируя [а-яА-Я0-9a-zA-Z]+

Добавлено:
Оттестировал. Годится
Автор: regga5
Дата сообщения: 15.02.2015 20:56
[а-яА-Я0-9a-zA-Z]+

Сжирает все строки
Даже где равно или больше 3 слов.

Добавлено:
Remove non-matching lines
>>>range out of order in character class (ошибка) при Support UTF8 - схема Perl.

Egrep - без ошибки, но ничего не происходит.
Без Support UTF8 - без ошибки, но ничего не происходит.

Добавлено:
^([^\s]+\s?){0,7}$

работает )

Добавлено:
А нет, это в обратном порядке.
Меньше чем, а не больше чем.
Автор: evoroz
Дата сообщения: 15.02.2015 21:45
regga5
Имелось в виду естественно: [а-яА-Я0-9a-zA-Z]+ [а-яА-Я0-9a-zA-Z]+ [а-яА-Я0-9a-zA-Z]+
Автор: regga5
Дата сообщения: 15.02.2015 23:30
Спасибище!
Автор: ged1470
Дата сообщения: 16.02.2015 15:46
Здравствуйте.
Застрял на такой задаче: необходимо найти в тексте числа и умножить их на 1,249.
Число нахожу(регулярка), для умножения пробовал фильтр "Calculate" - не работает, пишет "Not a number".
Как преобразовать найденный текст в число и умножить?
Автор: Rustamer
Дата сообщения: 16.02.2015 16:46
ged1470
Например, так:
http://imageshack.com/i/f0FbrN6Kp - Find Pattern(perl style)
Автор: ged1470
Дата сообщения: 16.02.2015 20:51

Цитата:
Rustamer

Спасибо за пример, разобрался.
У меня разделителем целой и дробной части была точка, поменял на запятую - и все прекрасно заработало.
Автор: ged1470
Дата сообщения: 18.02.2015 10:42
Может кто знает, почему умножение дробных чисел так неточно в знаках после запятой.
Нужно перебрать числа в файле и умножить их на 1,249.
3880,27 * 1,249 = 4846,36987 (правильно будет = 4846,457)
4707,28 * 1,249 = 3579,29288 (правильно будет = 5879,392)
3452,99 * 1,249 = 4312,67219 (правильно будет = 4312,784)

Вот такая "точная" математика.
Пробовал и такой вариант:
( (3880,27 * 10) * 1,249 ) / 10 = 4846,36987 (правильно будет = 4846,457)

И просто умножать на 1,249000000001
но точность так и не повысилась.

Кто что может посоветовать в таком случае.
Автор: evoroz
Дата сообщения: 18.02.2015 11:10
ged1470
Перемножил и получил правильный результат.
Автор: ged1470
Дата сообщения: 18.02.2015 11:59
У меня версия TextPipe Pro 9.0 Single User Edition (скачана с торрента).
В какой вы пробовали?
Автор: evoroz
Дата сообщения: 18.02.2015 19:34
ged1470
9.7
Автор: ged1470
Дата сообщения: 19.02.2015 08:36
Попробовал и в версии 9.7 - результат тот-же, неверный.
Чтобы не ходить вокруг, да около, вот сохраненный файл из TextPipe http://my-files.ru/9c6pwv
Автор: evoroz
Дата сообщения: 19.02.2015 12:34
ged1470
http://my-files.ru/r7xf3f

Добавлено:
Сделал свой вариант, почему так происходит разбираться не стал.

Добавлено:
Предполагаю, что сотые как-то не так себя ведут.
Автор: ged1470
Дата сообщения: 19.02.2015 14:45
evoroz
Предполагаю, что сотые как-то не так себя ведут.
Застревают видать где-то.

Ваш вариант считает все верно. Он даже нормально обрабатывает точку, как разделитель целой и дробной части числа. У меня почему-то работало только с запятой.

Спасибо за помощь evoroz.
Автор: evoroz
Дата сообщения: 19.02.2015 15:48
ged1470

Цитата:
Он даже нормально обрабатывает точку

Фильтр первой строкой меняет точку на запятую
Автор: Quasamodo
Дата сообщения: 10.04.2015 10:27
Имеем_1: список имэйлов в формате строка - мыло (много-много гигабайт)
Имеем_2: список доменов без дублей (десятки-десятки мегабайт)

Хотим:
1. удалить из списка имэйлов все имэйлы, базирующиеся на доменах из нашего списка доменов;
2. сохранить в списке имэйлов лишь имэйлы, базирующиеся на доменах из нашего списка домегов.

Как реализовать это на ТекстПайпе?

Страницы: 12345678

Предыдущая тема: Программы для решения уравнений


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.