Me gustaría editar archivos pasados en entrada de canalización usando vim de manera no interactiva o editar archivos en el lugar (similar a sed).
Pocos ejemplos usando sed:
$ sed -i'.bak' s/foo/test/g file # Edit file in-place.
$ cat file | sed s/foo/test/g # Parse file in pipeline.
Sin embargo, podría leer aquí que:
sedes un S TREAM ED itor, no un editor de archivos. Sin embargo, las personas en todas partes tienden a abusar de él por tratar de editar archivos. No edita archivos.
En segundo lugar, algunas opciones, como la edición in situ ( -i), son portables.
¿Cómo se puede lograr la misma funcionalidad en vim?

filede tu segunda línea de comando.Respuestas:
Para editar archivos de manera no interactiva
ex(vies el modo visual paraex), puede usar+{command}o-c {command}parámetros que le permitan ejecutar los comandos vi después de que se haya leído el primer archivo.El
exes un editor de línea de comandos estándar (similar aed).También se
vipedebe usar un (editor de canalización de comandos Vim) que es parte delmoreutilspaquete y le permitirá ejecutar su editor en medio de una canalización de Unix y editar los datos que se canalizan entre los programas.Ejemplos
La entrada y salida estándar simple mediante tuberías se puede lograr mediante esta sintaxis de shell:
Aquí hay un ejemplo simple de cómo imprimir el archivo después de la sustitución:
Más ejemplos para editar archivos en el lugar:
También puede usarlo
-s {scriptin}para que los comandos se carguen desde el archivo, por ejemplo:o usando la redirección de E / S:
Para editar un archivo y guardar los cambios en otro, consulte los siguientes ejemplos:
Más ejemplos prácticos.
Ejemplo real en vivo de la especificación RPM :
Extrayendo etiquetas html :
Eliminar etiquetas XML :
Eliminar la etiqueta de estilo del encabezado e imprimir la salida analizada:
Analiza html con múltiples reglas complejas:
Aún más ejemplos:
Ver también:
fuente
vim '+:0,$s/foo/test/g' '+:wq! file2' file1en su lugar.bufdo. A pesar de que Vim es lo que está instalado prácticamente en todas partes, vale la pena saber que puede editar archivos de script utilizando solo las funciones compatibles con POSIXex.exy realmente aprenderlo. Gracias. Algunas lecturas adicionales sobre este tema (divulgación completa: escribí esto;) es: invertir cada cuatro líneas conexy usar la-copción . Puede agregarlos a su lista de enlaces en la parte inferior, si lo desea. :)