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