pesar del hecho de que el uso de ed
o sed
es una práctica común , veces utilizando Vim es mucho más conveniente. De hecho, en este caso en lugar de escribir un guión ed
-como "a ciegas", es más fácil llevar a cabo la edición deseada de uno de los archivos de forma interactiva con
vim -w log.vim file1.txt
y luego repetir en el resto de los archivos.
for f in file*.txt; do vim -s log.vim "$f"; done
En su expediente del caso log.vim
es probable que tenga un contenido similar a esto:
gg55dd:25,35s/^/\/\//
:w %_new
:q!
Tenga en cuenta, que para salvar el archivo con el nuevo nombre que no debería escribir directamente, pero prefiere usar %
sustitución . Otra forma podría ser duplicar los archivos de antemano y luego editarlos en su lugar (guardando cada uno de ellos por :w
).
La ventaja de este enfoque es que puede realizar todos los cambios interactivamente para garantizar que obtiene el resultado que desea obtener.
Y, por supuesto, se puede hacer lo mismo de una manera ed
-como.
for f in file*.txt; do vim -c '1,55d|25,35s/^/\/\/ /|w! '"${f}_new"'|q!' $f
Por no mencionar que es claramente expresado en la pregunta que se prefiere una solución Vim.
Debe usar 'sed' en el shell' bash' si desea 'editar' archivos sin abrirlos. – pavium
'ex' sería una coincidencia mejor que' sed', 'ex' utiliza el mismo conjunto de comandos establecido' vi'. –