
Necesito escribir un script para reemplazar una parte del archivo por otra. Estoy manejando cientos de archivos.
Tengo una lista de comandos para agregar a un montón de archivos de texto. Pero en los archivos tengo comandos comunes al principio.
Simplemente quiero reemplazar la lista de comandos con mi lista de comandos. Más información se proporciona a continuación.
Archivo original
%apj=E:\Work\Informatin\Regarding work\DND.apj
%mem=4GB
%nprocshared=2
#p oyu opsd qtnv/1-a(x) kglgg=uioewr
Application
0 1
X -3.66480600 0.10278400 -0.00655500
Y -4.11487100 1.45621700 -0.05226200
Z -5.10300200 1.90042600 0.83864800
1 2 1.0 13 1.0 23 1.0
2 3 1.5 4 1.5
3 5 1.5 6 1.0
4 7 1.5 8 1.0
Personajes que quiero usar para reemplazar
%apj=D:\Store\Data\Diff All\SMC.apj
%mem=800MB
%nprocshared=4
#p udf AMER hbvn/3-b(n) huggh=whea
Use
0 1
X -3.66480600 0.10278400 -0.00655500
Y -4.11487100 1.45621700 -0.05226200
Z -5.10300200 1.90042600 0.83864800
Después de reemplazar con mi lista de comandos, también quiero eliminar los caracteres que se encuentran después de una línea en blanco, es decir, las siguientes líneas, y conservar el espacio en blanco.
1 2 1.0 13 1.0 23 1.0
2 3 1.5 4 1.5
3 5 1.5 6 1.0
4 7 1.5 8 1.0
Respuesta1
Creo que esto es lo que necesitas:
sed '1,6d
7c%apj=D:\Store\Data\Diff All\SMC.apj\
%mem=800MB\
%nprocshared=4\
#p udf AMER hbvn/3-b(n) huggh=whea\
\
Use\
/^$/q' filename
En lugar de reemplazar línea por línea, las primeras seis líneas se eliminan ( 1,6d
) y la séptima se reemplaza por el nuevo encabezado, insertado con el c
comando. Finalmente, el procesamiento se detiene en la siguiente línea vacía.
Si proporciona el resultado esperado, agregue la opción -i
para realizar el reemplazo directamente en el archivo (GNU sed
, adaptación para la versión BSD).