Duplication possible :
Comment puis-je faire en sorte que iconv remplace le fichier d'entrée par la sortie convertie ?
Je me connecte fréquemment à amazon ec2 en utilisant leurs noms DNS publics
(ec2-12-34-56-78.compute-1.amazonaws.com ) et à cause de cela mes known_hosts le fichier est submergé par beaucoup de ec2 entrées que je n'utiliserai plus jamais.
Je sais que je pourrais probablement utiliser sed -i pour éditer sur place mais je voulais utiliser grep et j'ai donc fait ceci :
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/known_hosts
Cela laisse known_hosts comme un fichier vide. Si je le fais :
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/tmp
mv ~/.ssh/tmp ~/.ssh/known_hosts
alors tout va bien, mais je ne comprends pas pourquoi lire et écrire dans le même fichier le laisse vide, et s'il existe un moyen de contourner cela lors de l'utilisation de grep , cat , etc.
Réponse acceptée :
Il existe un utilitaire appelé sponge qui fait partie de la suite moreutils. Il a été conçu dans ce but précis.
grep -v ec2 ~/.ssh/known_hosts | sponge ~/.ssh/known_hosts