8
ファイルシステム全体でのsedインプレース行削除?
まだ診断されていないアプリケーションのバグが原因で、ディスクがいっぱいのサーバーが数百台あります。重複する行で満たされたファイルが1つあります。ログファイルではなく、変数定義を含むユーザー環境ファイルです(そのため、ファイルを削除することはできません)。 sed誤って追加された行をチェックして削除する簡単なコマンドを書き、ファイルのローカルコピーでテストしました。意図したとおりに機能しました。 ただし、ディスク全体を使用してサーバーで試したところ、およそ次のエラーが発生しました(コピーと貼り付けではなく、メモリからのものです)。 sed: couldn't flush /path/to/file/sed8923ABC: No space left on deviceServerHostname もちろん、私が知っている、左にスペースはありません。だから私はものを削除しようとしています!(sed私が使用しているコマンドは、4000行以上のファイルを約90行に減らします。) 私のsed命令はただsed -i '/myregex/d' /path/to/file/filename ディスクがいっぱいでもこのコマンドを適用する方法はありますか? (クイックフィックスとして数百のサーバーに適用する必要があるため、自動化する必要があります。) (明らかにアプリケーションのバグを診断する必要がありますが、その間サーバーは正しく動作していません...) 更新:私が直面した状況は、自分が削除できることがわかった他のものを削除することで解決しましたが、この質問への回答は今後も他の人にも役立つと思います。 /tmp立ち入り禁止です。同じファイルシステム上にあります。 ディスク領域を解放する前にvi、ファイルを開いて実行することで行を削除できることをテストして確認し:g/myregex/d、変更をで正常に保存しました:wq。一時ファイルを保持するために別のファイルシステムに頼ることなく、これを自動化することは可能であると思われます...(?)