Possibile duplicato:
Come posso fare in modo che iconv sostituisca il file di input con l'output convertito?
Mi collego spesso ad amazon ec2 utilizzando i loro nomi DNS pubblici
(ec2-12-34-56-78.compute-1.amazonaws.com
) e per questo i miei known_hosts
il file viene sopraffatto da un sacco di ec2
voci che non userò mai più.
So che probabilmente potrei usare sed -i
per modificare sul posto ma volevo usare grep
e così ho fatto questo:
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/known_hosts
Questo lascia known_hosts
come un file vuoto. Se lo faccio:
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/tmp
mv ~/.ssh/tmp ~/.ssh/known_hosts
allora le cose vanno bene, ma sono confuso perché leggere e scrivere sullo stesso file lo lascia vuoto e se c'è un modo per aggirare questo problema quando si usa grep
, cat
, ecc.
Risposta accettata:
C'è un'utilità chiamata sponge
fa parte della suite moreutils. È stato creato proprio per questo scopo.
grep -v ec2 ~/.ssh/known_hosts | sponge ~/.ssh/known_hosts