![ファイルを削除せずに特定のコマンド<file.txt> file.txtを使用する方法[重複]](https://linux33.com/image/134769/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%89%8A%E9%99%A4%E3%81%9B%E3%81%9A%E3%81%AB%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%26lt%3Bfile.txt%26gt%3B%20file.txt%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%5B%E9%87%8D%E8%A4%87%5D.png)
私は以前にその場所でファイルを変更すると予想していたので、これを行ったことがありますが、$ tr '\t' ',' <file.txt >file.txt
リダイレクトは>
ファイルを読み取る前にファイルを切り捨てます。<
ファイルを切り取ったり削除したりせずにファイルを変更できますか?
答え1
あなたはできません。リダイレクト>
演算子〜するパイプラインの一部として新しい空のファイルを作成します。これを行うツール(たとえばsed --in-place
)は、新しいファイルを作成してファイルに書き込んでから、新しいファイルを古いファイルの場所に移動するようです。
$ ls -i file; sed --in-place 's/foo/bar/' file; ls -i file
266110 file
262180 file