Hay muchas formas efectivas de hacer lo que desea, ya sea dentro de vi (m) o fuera de vi (m).
Ejecute su comando, produzca un archivo (temporal), luego edite el archivo ( vea la respuesta de Joseph R. )
grep -e"Peu[gG]eot" carlist.txt && vi /tmp/peugeot.txt
Ejecute su comando (en segundo plano) para producir un archivo temporal y edite el archivo, usando ": e!" para actualizar su archivo a medida que se produce (esto es útil para archivos de registro y otros archivos producidos por otro proceso, por ejemplo, cron?),
grep -e "Peu[gG]eot" carlist.txt > /tmp/peugeot.txt &
vi /tmp/peugeot.txt
Ejecute vi (m), y ejecute un proceso secundario para crear el archivo temporal, y luego léalo,
vi
:!grep -e "Peu[gG]eot" carlist.txt > /tmp/peugeot.txt
:r /tmp/peugeot.txt
O simplemente cambie al archivo,
:e /tmp/peugeot.txt
Ejecute vi (m) y use la doble explosión "!!" para que vi ejecute el comando secundario, tome los resultados y los inserte en la ubicación actual (sobrescribe la línea actual, así que asegúrese de tener una línea en blanco),
vi
i
here
empty
there
<esc>
kk
!!grep -e "Peu[gG]eot" carlist.txt
Y ahora puede escribir el archivo (si lo desea) en cualquier nombre de archivo,
:w /tmp/someotherfilename.txt
Y la respuesta de Petr Uzel también es buena,
grep -e "Peu[gG]eot" carlist.txt | vi -
Que lee de stdin
:read !grep -e Peugeot -e PeuGeot carlist.txt
.:read !cmd...
incluirá la salida de cmd ... en el archivo (en la ubicación del cursor)grep ... > /tmp/foo
. Puede agregar&& vi /tmp/foo
al final si desea editar ese archivo de inmediato.vi
opera en archivos de texto arbitrarios; los archivos en sí no están directamente asociados convi
. (O, como acabo de aprender,vi -
harávi
que opere sobre el contenido destdin
;vim
hace esto, pero no todas las versiones devi
do.)