Выделение “Синтаксиса” плоский файл

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

Это должно быть более сложно, чем одна строка соответствует всем однако, существует несколько различных "типов" строк.

Образец показывают ниже

A9999000055555 333333     55554444422222210102009000000333333
B44444555550000
B44444555550000
B44444555550000
B44444555550000
C9999        0004

За исключением "0004" (# записей B) и "10102009" (дата) все другие порядковые номера были бы фактическим буквенно-цифровым индикатором, представляющим различные поля ввода данных пользователем. Первая буква обычно определяется как тип Строки.

Намерение этого вопроса состоит в том, чтобы позволить людям проверять "правильность" формата файлов. Обычно эти файлы обычно создаются автоматизированным способом, но изменение бизнес-правил и старые мейнфреймовые программы должны быть обновлены (и что заканчивает тем, что произошло, не симпатично). Таким образом, идея состоит в том, чтобы дать тем, кто создает эти файлы способ перепроверить себя, что файл встречает формат. Я не предназначаю ни для КАКОЙ проверки бизнес-правила здесь, просто формат.

5
задан 23.12.2009, 23:00

7 ответов

Вы могли записать сценарий для добавления HTML-тэгов, чтобы сделать окраску. sed (работы над строками) и awk (работы над столбцами) мог бы помочь, особенно над Linux. Или сценарий жемчуга. Вы могли использовать регулярные выражения, чтобы сделать сопоставление с образцом.

Необходимо будет также добавить минимальный HTML-код для преобразования его в файл HTML (заголовок и теги основного текста).

1
ответ дан 07.12.2019, 17:30
  • 1
    Намерение не состоит в том, чтобы сделать HTML, но предоставлять инструкции при редактировании фактических файлов. – hova 16.10.2009, 21:44
  • 2
    Редактирование, в какой? Vim (regex), notepad2 (примитивные синтаксические анализаторы)...? – Rook 17.10.2009, 01:27

Vim! Запустите с там инструкций для изменения подсветки синтаксиса и пробейтесь оттуда. Вот то, что я думаю, что Вы говорите:

  • Если строка запустится с "A", то это будет иметь серию 12 символов; пространство; шесть символов; некоторые пробелы; много символов
  • Если строка запустится с "B", то это будет иметь серию 14 символами;
  • Если строка запустится с "C", то это будет иметь 4 символа; некоторые пробелы; 4 символа

Таким образом, можно определенно определить правила выделения на основе тех требований.

1
ответ дан 07.12.2019, 17:30

Если бы я не собирался кодировать фронтенд для файла, то я, вероятно, использовал бы Блокнот ++, поскольку он имеет способ определить Ваш собственный язык, вместе с выделением.

Загрузите / Основной сайт

Все о пользовательском разделе языка

Другой пример / walkthru

Надо надеяться, они помогут Вам начать.

0
ответ дан 07.12.2019, 17:30

Я спросил о том, чем будет надлежащее использование такой утилиты, и на основе пары ключевых слов ("просматривают и проверяют, прежде чем они отправят"), Вы в основном хотите сделать следующее:

  1. Удостоверьтесь, что файл находится в стандартном формате с правильным числом столбцов (и строки, возможно)
  2. Дайте некоторую статистику как общее количество записей, общее количество проданных товаров, диапазон дат, представленный в файле, и т.д., и т.д.
  3. Сохраните файл или к центральному серверу или к зоне ожидания для загрузки позже.

Правильный способ выполнить это, по-моему, (особенно, потому что, как Вы говорите, многие клиенты все еще имеют мейнфреймы и все еще получают данные в форматах как это), должен использовать пользовательский фронтенд для получения информации о данных клиенту.

Способ сделать это? У Вас есть по существу 2 опции: любая a) запишите синтаксический анализатор файла сами в Java, C# или C++ (дрожь) для предоставления 'предварительного просмотра' данных, содержавшихся в файлах. Или b) наймите участника, или недавний выпускник (проверьте портфель сначала!) классов программирования для кодирования синтаксического анализатора для Вас. Или племянник босса или тормозной бойфренд Вашей сестры, и т.д. Я не знаю, какой опыт или интерес Вы имеете в такой вещи, ни чем-либо о Вашем образовании, поэтому простите мне, если я делаю неуместные предположения. Как с таким количеством других вещей в мире Технологии, у Вас могут быть любые два из быстрых, дешевых, и хороший.

Самая низкая цена и самая быстрая опция представленных до сих пор, которые охватывают диапазон возможностей, о которых я знаю как технологический профессионал, должны были бы стиснуть зубы, изучить некоторых vim (используйте GVim для Windows), и используйте фильтры подсветки синтаксиса там. Второй должен был бы сделать ряд сценариев в чем-то как sed или awk.

Так как вход к Вашей проблеме является по существу потоком текста, обрубленного с промежутками (разрывы строки), обработка данных должна обработать вход таким же образом, и очень немного программ делают так теперь, потому что, как Вы говорите, это - данные, сгенерированные старой мейнфреймовой программой.

Excel мог бы также быть полезным в импорте, но все строки должны быть отформатированы тот же путь, таким образом, это все еще не собирается делать то, что Вы хотите. Одна дополнительная вещь, которая приходит на ум, состоит в том, что Вы смогли использовать Доступ, чтобы проанализировать такой файл и использовать некоторый VBA для создания количеств записей и статистики компиляции, но до накладывания выделений, которые будут менее легкими. Если бы Вы знаете каких-либо разработчиков КОБОЛа, это было бы замечательными 1-2 ночными проектами для одного из них. Это могло бы даже превратиться в проект с открытым исходным кодом на sourceforge.net к свободным данным из муфт мейнфрейма!

1
ответ дан 07.12.2019, 17:30

Я думаю, что Вы вряд ли найдете решение, которое не включает программирование.

Любой текстовый редактор с функциями подсветки синтаксиса, более сложными, чем простой поиск по ключевым словам, обязательно будет более сложным, как это находится в Vim и Emacs.

Для Vim можно определить выделяющийся файл как это:

syntax clear A B C

syntax match A /^A\%(\a\|\d\)\{13\} \d\{6\} \{5\}\S\+$/
syntax match B /^B\%(\a\|\d\)\{14\}$/
syntax match C /^C\%(\a\|\d\)\{4\} \{8\}\d\{4\}$/

highlight A guifg=darkgreen
highlight B guifg=darkblue
highlight C guifg=royalblue

и загрузите его :source myhighlight.vim

Затем строки будут выделены, когда они будут корректны, или оставленные невыделенными, если они не соответствуют регулярному выражению.

Это становится более сложным, если Вы хотите выделить конкретные поля в тех строках.

Лично, я посмотрел бы на способы вызвать некоторый сценарий от редактора, который мог сделать всю проверку меня. Тем путем Вы могли использовать любого редактора и не быть вынуждены использовать того, который имеет выделяющуюся гибкость, в которой Вы нуждаетесь.

1
ответ дан 07.12.2019, 17:30

Похоже, что Ваши столбцы являются разграниченным пространством?

Вы попытались просто импортировать их в Excel и затем просто применить выделение/цвета к столбцам?

Если это не сократит его затем, как другие говорят, Вы, вероятно, смотрите на программирование. Вы могли, вероятно, записать довольно простой Perl или VBScript, это возьмет тот текстовый файл и произведет синтаксис, выделил файл HTML или подобное использование чего-то как regexes для соответствия шаблонам, которые Вы ищете?

0
ответ дан 07.12.2019, 17:30

Вы могли попробовать что-то как Монарх

0
ответ дан 07.12.2019, 17:30

Теги

Похожие вопросы