Вывод текста между двумя строками с использованием опции фильтрации - PullRequest
1 голос
/ 03 августа 2020

Мы используем EMEditor для анализа файлов журнала в огромных текстовых файлах. У нас есть следующее требование. В файле журнала много таблиц в этом формате:

+----------------------+
|Column1|Column2|Colum3|
+-------+-------+------+
|Data1  |Data2  |Data3 |
|Data4  |Data5  |Data6 |
+-------+-------+------+
| Number of Records: 2 |
+----------------------+

Текст между верхним и нижним колонтитулами очень динамичный; между ними может быть 0 или x-строки.

Я бы использовал параметр фильтра таким образом, что я ввожу, например, |Column1 с использованием начального фильтра и | Number of Records: как конечного фильтра. EMEditor должен фильтровать все записи между начальным и конечным фильтрами (включая строку с найденными шаблонами фильтра).

Я видел, в настоящее время можно выводить только строки выше и ниже шаблона фильтра, но это практически невозможно путь.

Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Это ОБЯЗАТЕЛЬНО должно выполняться через фильтр? Разве нельзя выделить / выбрать только данные таблицы с помощью стандартного метода поиска? например Ctrl-F. Нажмите "Дополнительно" и убедитесь, что "Регулярное выражение". "Может соответствовать символам новой строки. Выбрано . Задайте для Дополнительные строки для поиска регулярных выражений число больше, чем вы ожидаете в самой большой таблице .

Нажмите «ОК», а затем «Найти» (выбраны регулярные выражения):

(? <= ^ \ + ---------------- ------ \ +.) \ |. +? (\ | Количество записей [^ \ |] + \ |) </strong>

Нажмите «Выбрать все», и мы надеемся, что это должно захватить только таблицы, и теперь вы можете делать с ними все, что хотите (нажмите кнопку «Извлечь», скопировать, вырезать и т. д. c.).

0 голосов
/ 04 августа 2020

Если символы + и | используются только для таблиц, вы можете фильтровать таблицы по этим символам. Для этого вы можете нажать кнопку Расширенный фильтр на панели инструментов Фильтр , нажать кнопку Добавить и ввести +, нажать Добавить * 1011 Снова нажмите кнопку *, чтобы ввести |, и установите для параметра Логическое разделение (ИЛИ) значение Предыдущее условие для второго элемента в списке. Наконец, нажмите кнопку Фильтр .

Обновления

Загрузите EmEditor v20.0.902 или новее и используйте Начать фильтр и параметры Конечный фильтр в Расширенный фильтр . Расширенный фильтр

Если вы хотите использовать макрос, это макрос для вас:

filters = document.filters;
filters.Clear();
filters.AddFind( "|Column1", eeFindReplaceCase, eeExFilterBegin );
filters.AddFind( "| Number of Records:", eeFindReplaceCase, eeExFilterEnd );
document.filters = filters;

Вы можете запустить этот макрос после открытия файла данных. Для этого сохраните этот код как, например, Filter.jsee, а затем выберите этот файл из Выбрать ... в меню Макросы . Наконец, откройте файл данных и выберите Выполнить в меню Макросы , пока ваш файл данных активен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...