Я пытаюсь вставить в свой файл следующие строки под строкой:
<Test>
<Document>
ThisIsATest
<Document>
</Test>
Строка, которую я хочу вставить ниже, - это This is a test..
Я могу вставить под него обычный текст с помощью команды sed -i '/test/aThis is new text' test2.txt, и файл будет содержать:
This is a test
This is new text
Сложность в том, что я не могу сделать это с многострочным элементом с косой чертой. Есть идеи, как это сделать? Мне не нужно использовать sed или awk; любая другая утилита Linux тоже подойдет.





вы можете использовать sed r -> read a file
Вы сохраняете свой многострочный замещающий текст в файле, например xml.txt, вы просто делаете:
sed -i '/test/r xml.txt' file
Вы получите то, что хотите.
Если вы предпочитаете не использовать настоящий файл, вы можете создать анонимный, используя решение здесь.
Шаблоны, которые вы используете с
sed, «обычно» разделяются косой чертой, какs/this/that/g, но вы можете использовать другой символ в качестве разделителя;s~this~that~gделает то же самое. Это полезно, когда текст, который вы ищете или заменяете, содержит косую черту.