Описание тега pakse
Используя TXR язык:
@(привязка наследования-времени нет)
@(привязка наследования-вре шь)
@(сбора)
@ (все)
@отступ/* ---------- @имя_задания ---------- */
@ (и)
@/ *//* ---------- @Нил#@типа#@шь ---------- */
@ (конец)
@ (привязки-отступ @(> (длина штрабы) 0))
@ (собрать :Варс ((время "") (вре "") (Маха "") (Н "") (УМК "")))
@/ */start_times: "@*время"
@/ */days_of_week: @вре
@/ */машина: @Маха
@/ */описание: "@*Опи"
команда@/ */: @ЦМД
@ (пока)
@ (конец)
@ (случаи)
@ (вставка привязки типа"")
@ (комплект (наследовать-унаследовать времени-вре) (время в расписании))
@ (или)
@ (привязка введите "ЦМД")
@ (привязки отступы Т)
@ ((время вре) (наследовать-унаследовать времени-вре))
@ (конец)
@(конец)
@(выходной)
"Название Задания", "Время", "Расписание", "Машина", "Описание", "Команда"
@ (повтор)
"@имя_задания", "@время", "@рас", "@мах", "@ОП", "@ЦМД"
@ (конец)
@(конец)
Это очень наивный подход. Из каждой записи, мы извлекаем все поля, которые нас интересуют, заменяя пробелы на те, которых нет (по умолчанию значения :Варс
аргумент @(сбора)
). Мы обращаем внимание на тип задания (коробка
или ЦМД
), и вмятины. Когда мы видим окно, мы копируем несколько свойств окна в глобальные переменные; и когда мы видим cmd, который изрезан, он копирует эти свойства. (Мы предполагаем, слепо, что они были созданы в более ранней коробке
.)
Выполнить:
$ txr рабочих мест.txr вакансии
"Название Задания", "Время", "Расписание", "Машина", "Описание", "Команда"
"Та#коробка#AbC_p", "16:15", "Су", "", "работа ABC, которая проходит в 4:15 вечера по воскресеньям, и должна закончиться до 5:30 вечера", ""
"Та#ЦМД#EfGJob_p", "16:15", "Су", "vm_machine1", "работа ЕФГ, который работает в АВС окна", "/path/to/shell/script.sh"
Обратите внимание на то, что выход через запятую цитирует поля, но ничего не делается в отношении к тому, что данные содержит кавычки. Если цитаты как-то сбежал в описание:
, то, что сохранится, конечно. На @*описание
нотации жадный матч, и так описание: "а-б"с\"д"
приведет к Опи
принимая на символов Б"С\"Д
которая будет воспроизведена дословно в выходной.
Хорошая вещь об этом решении является то, что если у нас нет примера из данных, можно догадаться из структуры кода, так как он выражает упорядоченный шаблон через файл. Мы видим, что есть разделы были собраны, которые начинаются с /* --- ... --- */
строки, в которых имя-задания вкладывается, и что существует тип поля между двух меток в середине имя задания. Затем обязательная пустая строка следует после того, какие свойства собрались, пока еще пустую строку и так далее.