Решение user0 близко, но если последнее совпадение попадает в последнюю строку файла, оно найдет предыдущее.Вместо этого перейдите на первую строку и выполните поиск в обратном направлении:
1
?^$PATTERN
a
$STR_TO_ADD
.
I только что опубликовал это на моем @ed1conf
аккаунте пару дней назад, так что это свежо вмой разум.
Кроме того, если вы пытаетесь добавить перед текстом (пример, который у вас уже есть), произойдет сбой, если первое совпадение будет в первой строке, потому что "-1
"идет до начала файла.Вместо этого используйте команду "i
", чтобы вставить текст, а не добавлять его:
$
/^$PATTERN
i
$STR_TO_ADD
.
Возможно, вам также понадобится убедиться, что "$STR_TO_ADD
" не содержит строк, содержащих один периодили расширение переменной преждевременно прекратит действие i
(или a
в ожидании).