Просматривая stackoverflow и другие некоторое время назад при первоначальном создании сценария, я обнаружил, что использование printf точно соответствует (или я так думал) тому, что мне нужно:
printf '%s\n' '$+?multi_pack?a' "$content" .x | ex $log_output
Вот такпоявляется в моем сценарии.Я знаю, каков его результат, и примерно, как использовать printf.Эта строка добавляет строку $content
(которая является расширением команды content="$(cat $temp_file_2)"
, где temp_file_2 содержит текст, который мне нужно добавить) после LAST-вхождения шаблона 'multi_pack' с использованием текстового редактора ex.Это должно быть последним вхождением, потому что добавление происходит во время генерирования файла журнала (с помощью циклов), и может происходить множественные вхождения шаблона, но меня интересует только последнее время появления шаблона, добавляя, таким образом,соответствующий текст (который изменяется) при каждом новом появлении шаблона (который, в свою очередь, будет относиться к чему-то отличному от последнего шаблона, сопоставленного в последний раз в цикле).
Что я пытаюсь отработатьэто как изменить команду printf так, чтобы шаблон был переменной, и как таковое изменение при необходимости (что привело бы к изменению позиции добавляемого текста) ....
Я пробовал что-то вроде:
printf '%s\n' "$+?${my_new_variable}?a" "$content" . x | ex $log_output
или
printf '%s\n' "$+?$my_new_variable?a" "$content" . x | ex $log_output
, и результат не соответствует ожиданиям ....
РЕДАКТИРОВАТЬ
Ответ Бармара - это то, что мне было нужно.Вопрос, который я хотел задать, был: «Делал ли я это правильно?»чтобы помочь мне точно определить, что вызывало неработоспособность вывода (что, как я объяснил до редактирования Чепнера, возможно, даже не было с этой строкой кода - если это действительно было правильно).Printf была своего рода красная сельдь, Ex делает сопоставление с образцом.