GNU/Linux >> Linux Esercitazione >  >> Linux

Leggi e scrivi sullo stesso file in Linux senza sovrascriverlo??

Questa domanda ha già risposte qui :Chiuso 9 anni fa.

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

Linux
  1. Trova file e directory su Linux con il comando find

  2. Copia e incolla nella riga di comando di Linux con xclip

  3. Output su Stdout e allo stesso tempo Grep in un file?

  4. Perché il descrittore di file viene aperto e letto solo una volta?

  5. UNIX / Linux:Guida per principianti alle autorizzazioni di file e directory ( umask, chmod, read, write, execute )

Introduzione al file system Linux

Suggerimenti Vim:leggi e scrivi file remoti con Vim su Linux

Il comando ln in Linux:crea collegamenti soft e hard

Come modificare la porta SSH predefinita in Linux [correttamente e in modo sicuro]

appunti di linux leggi/scrivi in ​​C

Qual è la differenza tra il file authorized_keys e il file known_hosts per SSH?