Проблема Мне нужно вставить текст произвольной длины (количество строк) в шаблон при сохранении точного количества строк.
Пример файла исходных данных:
You have a hold available for pickup as of 2012-01-13:
Title: Really Long Test Title Regarding Random Gibberish. Volume 1, A-B, United States
and affiliated territories, United Nations, countries of the world
Author: Barrel Roll Morton
Title: How to Compromise Free Speech Using Everyday Tools. Volume XXVI
Author: Lamar Smith
#end-of-record
You have a hold available for pickup as of 2012-01-13:
Title: Selling Out Democracy For Fun and Profit. Volume 1, A-B, United States
Author: Lamar Smith
Copy: 12
#end-of-record
Образец шаблона (упрощенно для краткости):
<%CUST-NAME%>
<%CUST-ADDR%>
<%CUST-CTY-ZIP%>
<%TITLES GO HERE%>
<%STORE-NAME%>
<%STORE-ADDR%>
<%STORE-CTY-ZIP%>
На этом этапе я использую 'mapfile' bash для загрузки записи исходного файла по записи, используя / ^ # end-of-file /регулярное выражение ... пока все хорошо.Затем я извлекаю предсказуемые аспекты каждой записи в соответствии со строкой, в которой они появляются, затем обрабатываю информацию, используя серию операторов поиска и замены.
Зависание Таким образом, проблема заключается в неизвестном количестве «титульных» записей, которые могут возникнуть.Как я могу разместить неизвестное количество заголовков и всегда иметь вывод точно 65 строк?
Учитывая, что записи заголовков всегда происходят, начиная со строки 8, я могу легко извлечь заголовки с помощью:
sed -n '8,$p' test-match.txt
Однако, как я могу вставить это в выделенное пространство, например, между <% CUST-CTY-ZIP%> и <% STORE-NAME%>, не выталкивая информацию о магазине из шаблона в шаблон?
Моя идея пока:
- сначала отправьте информацию о клиенте через:Пример.
sed 's/<%CUST-NAME%>/Benedict Arnold/' template.txt
- Добавить титульные записи ???
- Затем информация о магазине / местоположении
sed 's/<%STORE-NAME%>/Smith's House of Greasy Palms/' template.txt
У меня есть код и функции для этого материала, если интересноно этот пост "ветреный", как это.Просто нужна помощь по вставке записей заголовков, сохраняя положение следующего текста и поддерживая общее количество строк 65. *
ОБНОВЛЕНИЕ Я решил сменить тактику.Я собираюсь создать заполнители в шаблоне для всех доступных строк между покупателем и информацией о магазине --- тогда:
- Проверить, является ли строка нулевой в источнике
- , если да -- заменить заполнитель на ноль, оставляя конец строки.Сохранение номера строки.
- если не равно нулю - снова замените его на текст, сохраняя номер строки и окончания строк в шаблоне.
В конце концов, я планирую потратить некоторое время на более внимательное рассмотрениеПредложение Трипли относительно Perl.Путь Perl действительно выглядит проще и проще в обслуживании, если я собираюсь застрять в этом проекте в долгосрочной перспективе.