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