Ответ 1
Попробуйте выполнить следующую команду:
sed '/<tag>/ r file2.txt' file1.txt
Это дает:
<html>
<body>
<tag>
Hello world
</tag>
</body>
</html>
ИЗМЕНИТЬ, чтобы объяснить, почему ваша команда не работает так, как вы хотите: команда r filename
добавляет ее содержимое в конце текущего цикла или когда читается следующая строка ввода. И вы используете команду N
, которая ничего не печатает, кроме как читает следующую строку, поэтому в это время печатается Hello world
, а затем нормальный поток строк.
В моем случае он читает строку с <tag>
, затем заканчивает цикл, поэтому печатает строку и после нее содержимое файла и продолжает чтение до конца.