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 CONTENT
etiquetas 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_file
comando 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 GNUsed
con la--posix
opció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
main
para escribir, borrarla, antes de que cat la lea.fuente
r FILE2
que pueda decirr !command
que lea desde un guión diferente.