Posible duplicado:
¿Cómo puedo hacer que iconv reemplace el archivo de entrada con la salida convertida?
Frecuentemente me conecto a Amazon ec2 usando sus nombres DNS públicos
(ec2-12-34-56-78.compute-1.amazonaws.com
) y por eso mis known_hosts
el archivo se abruma con una gran cantidad de ec2
entradas que nunca volveré a usar.
Sé que probablemente podría usar sed -i
para editar en el lugar pero quería usar grep
y entonces hice esto:
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/known_hosts
Eso deja known_hosts
como un archivo vacío. Si lo hago:
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/tmp
mv ~/.ssh/tmp ~/.ssh/known_hosts
entonces las cosas están bien, pero estoy confundido por qué leer y escribir en el mismo archivo lo deja en blanco, y si hay alguna forma de evitar esto cuando se usa grep
, cat
, etc.
Respuesta aceptada:
Hay una utilidad llamada sponge
que es una parte de la suite moreutils. Fue hecho exactamente para este propósito.
grep -v ec2 ~/.ssh/known_hosts | sponge ~/.ssh/known_hosts