GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Lesen und schreiben Sie in dieselbe Datei unter Linux, ohne sie zu überschreiben?

Für diese Frage gibt es hier bereits Antworten :Vor 9 Jahren geschlossen.

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

Linux
  1. Finden Sie Dateien und Verzeichnisse unter Linux mit dem Befehl find

  2. Warum wird der Dateideskriptor nur einmal geöffnet und gelesen?

  3. Dateiberechtigungen unter Linux – Lesen/Schreiben/Ausführen

  4. Linux-Zwischenablage lesen/schreiben in C

  5. SSH - So fügen Sie den Befehl -t in die Datei ~/.ssh/config ein

Kopieren und Einfügen in der Linux-Befehlszeile mit xclip

Einführung in das Linux-Dateisystem

Vim-Tipps – Lesen und schreiben Sie entfernte Dateien mit Vim unter Linux

Der ln-Befehl unter Linux:Soft- und Hardlinks erstellen

So ändern Sie den Standard-SSH-Port in Linux [richtig und sicher]

Linux:Wie verwende ich eine Datei gleichzeitig als Ein- und Ausgabe?