Podrías intentar algo como:
sed -n "/\[fencedtitle\]/{:a;N;/----/!ba;N;s/.*\n/$(tree)\n/};p" file
Pero esto será problemático si la salida de tree
contiene caracteres que son especiales para expresiones regulares. Si guarda la salida de tree
en un archivo:
tree > my-out
Entonces puedes leerlo en sed sin demasiados problemas:
sed -n '/\[fencetitle\]/{p;n;p;r my-out
:a;n;/^----$/!ba};p' file
(Sí, el comando r
requiere una nueva línea después, ningún comando puede seguirlo en la misma línea.)
El p;n;p;
simplemente imprime el inicio de la cerca, luego leemos el archivo, luego omitimos todo hasta el final de la cerca.
Puede finalizar la línea después del comando r
dividiendo el resto en una expresión sed separada:
sed -ne '/\[fencetitle\]/{p;n;p;r my-out' -e ':a;n;/^----$/!ba};p' file