Mögliches Duplikat:
Wie kann ich iconv dazu bringen, die Eingabedatei durch die konvertierte Ausgabe zu ersetzen?
Ich verbinde mich häufig mit Amazon ec2 über deren öffentliche DNS-Namen
(ec2-12-34-56-78.compute-1.amazonaws.com ) und damit meine known_hosts Datei wird mit viel ec2 überfordert Einträge, die ich nie wieder verwenden werde.
Ich weiß, dass ich wahrscheinlich sed -i verwenden könnte an Ort und Stelle bearbeiten, aber ich wollte grep verwenden und so habe ich das gemacht:
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/known_hosts
Bleibt known_hosts als leere Datei. Wenn ja:
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/tmp
mv ~/.ssh/tmp ~/.ssh/known_hosts
dann sind die Dinge in Ordnung, aber ich bin verwirrt, warum das Lesen und Schreiben in dieselbe Datei leer bleibt und ob es einen Weg gibt, dies zu umgehen, wenn grep verwendet wird , cat usw.
Akzeptierte Antwort:
Es gibt ein Dienstprogramm namens sponge das ist ein Teil der moreutils-Suite. Es wurde genau für diesen Zweck hergestellt.
grep -v ec2 ~/.ssh/known_hosts | sponge ~/.ssh/known_hosts