Ответ 1
Вы можете использовать команду r
. Когда вы найдете "лису" на входе...
/fox/{
... замените его ничем...
s/fox//g
... и прочитайте входной файл:
r f.html
}
Если у вас есть файл, например:
$ cat file.txt
the
quick
brown
fox
jumps
over
the lazy dog
fox dog
результат:
$ sed '/fox/{
s/fox//g
r f.html
}' file.txt
the
quick
brown
</div>
</div>
<br>
<div id="container2">
<div class="question" onclick="javascript:show('answer2')";>
jumps
over
the lazy dog
dog
</div>
</div>
<br>
<div id="container2">
<div class="question" onclick="javascript:show('answer2')";>
EDIT: чтобы изменить обрабатываемый файл, просто передайте флаг -i
в sed:
sed -i '/fox/{
s/fox//g
r f.html
}' file.txt
Некоторые версии sed (например, мои собственные) требуют, чтобы вы передавали расширение на флаг -i
, который будет расширением файла резервной копии со старым содержимым файла:
sed -i.bkp '/fox/{
s/fox//g
r f.html
}' file.txt
И вот то же самое, что и один лайнер, который также совместим с Makefile
sed -i -e '/fox/{r f.html' -e 'd}'