В POSIX sed вы можете использовать команду a
для добавления с экранированной литеральной новой строкой:
$ sed '/^[[:blank:]]*also-notify/ a\
NEW LINE' file
В GNU sed a
несколько более естественна, поскольку предполагается новая строка:
$ gsed '/^[[:blank:]]*also-notify/ a NEW LINE' file
Проблема с sed
в вашем примере имеет две стороны.
Во-первых, любое sed
регулярное выражение не может быть для многострочного совпадения, как в example\.net".*?also-notify.*?
.Это больше соответствует типу Perl.Вам потребуется использовать оператор диапазона для запуска, как в:
$ sed '/"example\.net/,/also-notify/{
/^[[:blank:]]*also-notify/ a\
NEW LINE
}' file
Вторая проблема - это \n
в прилагаемом тексте.С POSIX sed \n
не поддерживается ни в одном контексте.В GNU sed предполагается новая строка, а \n
находится вне контекста (если сразу после a
) и интерпретируется как экранированный литерал n
.Вы можете использовать \n
с GNU sed после 1 символа, но не сразу после.В POSIX sed ведущие пробелы добавленной строки всегда удаляются.