Digamos que tengo un archivo de texto como este:
# custom content section
a
b
### BEGIN GENERATED CONTENT
c
d
### END GENERATED CONTENT
Me gustaría reemplazar la parte entre las GENERATED CONTENTetiquetas con el contenido de otro archivo.
¿Cuál es la forma más sencilla de hacer esto?
bash
unix
shell-script
textfiles
text-processors
smokris
fuente
fuente

sed¡puede hacer mucho más que solos/.../...!r insert_filecomando debe ser lo último en su línea. Tenga en cuenta que ni los espacios en blanco ni los comentarios están permitidos después. El código se probó usando GNUsedcon la--posixopción habilitada, y funcionó como se esperaba, por lo que debería funcionar con cualquier posix compatiblesed.output=$(sed -e "..." existing_file). Ej. ) Y luego realice el reemplazo en una segunda pasada (pecho "$output" > existing_file. Ej. ), Ya que al intentar redirigir a un archivo desde el que está leyendo, se truncará antes de leer el contenido.fuente
Advertencia: definitivamente esta no es la forma más sencilla de hacerlo. (EDITAR: bash funciona; POSIX grep también está bien)
Si el texto principal está en el archivo "main" y el contenido generado está en el archivo "gen", puede hacer lo siguiente:
fuente
mainpara escribir, borrarla, antes de que cat la lea.fuente
r FILE2que pueda decirr !commandque lea desde un guión diferente.