重複の可能性あり:
iconv で入力ファイルを変換された出力に置き換えるにはどうすればよいですか?
私は頻繁にパブリック DNS 名
( ec2-12-34-56-78.compute-1.amazonaws.com
) を使用して Amazon EC2 に接続しますが、このため、二度と使用しないエントリがknown_hosts
大量にファイルに格納されてしまいます。ec2
おそらくその場で編集するために を使用できることはわかっていますsed -i
が、 を使用したかったのでgrep
、次のようにしました。
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/known_hosts
known_hosts
空のファイルとして残ります。次のようにすると:
grep -v ec2 ~/.ssh/known_hosts > ~/.ssh/tmp
mv ~/.ssh/tmp ~/.ssh/known_hosts
grep
問題はないのですが、同じファイルを読み込んで書き込むとなぜ空白になるのか、また、、cat
などを使用するときにこれを回避する方法はあるのかがわかりません。
答え1
と呼ばれるユーティリティがありsponge
、これはもっと見るスイート。まさにこの目的のために作られました。
grep -v ec2 ~/.ssh/known_hosts | sponge ~/.ssh/known_hosts
答え2
リダイレクトは、コマンドが実行される前にシェルによって実行されます。つまり、シェルはファイルをgrep
読み取る前にファイルを切り捨てるように指示されます。シェルのリダイレクトを使用している場合、これを回避する方法はありません。