Стратегии обработки файла с несколькими фиксированными форматами
Этот вопросне Специфичный для Perl (хотяunpack
функция, скорее всего, войдет в мою реализацию).
Мне приходится иметь дело с файлами, где существует несколько форматов, чтобы иерархически разбить данные на значимые разделы. То, что я хотел бы сделать, это проанализировать данные файла в подходящую структуру данных.
Вот пример (комментарий к RHS):
# | Format | Level | Comment
# +--------+-------+---------
**DEVICE 109523.69142 # 1 1 file-specific
.981 561A # 2 1
10/MAY/2010 24.15.30,13.45.03 # 3 2 group of records
05:03:01 AB23X 15.67 101325.72 # 4 3 part of single record
* 14 31.30474 13 0 # 5 3 part of single record
05:03:15 CR22X 16.72 101325.42 # 4 3 new record
* 14 29.16264 11 0 # 5 3
06:23:51 AW41X 15.67 101323.9 # 4 3
* 14 31.26493219 0 # 5 3
11/MAY/2010 24.07.13,13.44.63 # 3 2 group of new records
15:57:14 AB23X 15.67 101327.23 # 4 3 part of single record
* 14 31.30474 13 0 # 5 3 part of single record
15:59:59 CR22X 16.72 101331.88 # 4 3 new record
* 14 29.16264 11 0 # 5
Логика у меня на данный момент хрупкая:
Я знаю, например, что формат 2 всегда идет после формата 1, и что они занимают только 2 строки.Я также знаю, что форматы 4 и 5 всегда идут парами, поскольку они соответствуют одной записи. Количество записей может быть переменнымЯ использую регулярные выражения для определения формата каждой строки. Однако это рискованно и не дает гибкости в будущем (когда кто-то решит изменить формат вывода).Большой вопрос здесь заключается в том, какие стратегии я могу использовать, чтобы определить, какой формат должен использоваться для какой строки. Мне было бы интересно узнать, сталкивались ли другие с подобными ситуациями и что они сделали для решения этой проблемы.