Это может сработать для вас (GNU sed и cat):
<<\! sed -e '/MetaBag/{e cat -' -e ':a;n;ba}' file
Lines of text to insert
before the first occurrence
of the string `MetaBag`
!
После вставленной строки (строк) вызов sed читает / печатает остаток файла.
Строка (и) для вставки помещается в здесь-документ, и при сопоставлении с регулярным выражением /MetaBag/
sed оценивает cat -
, который принимает здесь-документ как стандартный ввод и передает его прямо как стандартный вывод при выполнении команды e
. Затем сценарий sed запускает al oop, который печатает текущую строку в пространстве шаблонов и заменяет ее следующей строкой, а затем повторяется до конца файла.
NB Команда e
оценивает следующие команды это, и эти команды должны заканчиваться новой строкой (или ее эквивалентом). Параметр -e
делает это по умолчанию, и поэтому скрипт разделен на две части, чтобы учесть это.