GNU/Linux >> Znalost Linux >  >> Linux

Číst a zapisovat do stejného souboru v Linuxu bez přepisování?

Tato otázka zde již obsahuje odpovědi :Uzavřeno před 9 lety.

Možný duplikát:
Jak mohu nastavit, aby iconv nahradil vstupní soubor převedeným výstupem?

Často se připojuji k amazon ec2 pomocí jejich veřejných DNS jmen
(ec2-12-34-56-78.compute-1.amazonaws.com ) a kvůli tomu můj known_hosts soubor je zahlcen spoustou ec2 položky, které už nikdy nepoužiji.

Vím, že bych pravděpodobně mohl použít sed -i upravit na místě, ale chtěl jsem použít grep a tak jsem udělal toto:

grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/known_hosts

Zbývá known_hosts jako prázdný soubor. Pokud ano:

grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/tmp
mv ~/.ssh/tmp ~/.ssh/known_hosts

pak je vše v pořádku, ale jsem zmatený, proč čtení a zápis do stejného souboru nechává prázdné a jestli to lze nějak obejít pomocí grep , cat , atd.

Přijatá odpověď:

Existuje nástroj nazvaný sponge který je součástí sady moreutils. Byl vyroben přesně pro tento účel.

grep -v ec2 ~/.ssh/known_hosts | sponge ~/.ssh/known_hosts

Linux
  1. Zkopírujte a vložte na příkazový řádek Linuxu pomocí xclip

  2. Výstup do Stdout a zároveň Grep do souboru?

  3. Proč je deskriptor souboru otevřen a přečten pouze jednou?

  1. Oprávnění souborů v Linuxu – čtení/zápis/spouštění

  2. UNIX / Linux:Průvodce pro začátečníky k oprávněním k souborům a adresářům (umask, chmod, čtení, zápis, spouštění)

  3. linuxová schránka pro čtení/zápis v C

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Je možné číst textový soubor v souboru zip chráněném heslem bez hesla?

  3. Jaký je příkaz pro kopírování, čtení a odstraňování souboru v linuxu