入力ファイルの内容を変換された出力に置き換えるソリューションには一時ファイルを使用するか、スポンジ便利です。
スティーブン・チャジェラス 回答これは、次のように読み書きモードでファイルを開く別の方法を示しています。
tr ' ' '\t' < file 1<> file
関連ファイルを壊さずに実際にどのように機能しますか?
ベストアンサー1
これはtr
ファイルサイズが変更されないために機能します。
1<>file
file
オーバーレイモードで標準出力として開きます。 (<>
読み取り/書き込みモードと呼ばれますが、読み取るプログラムがほとんどないため、stdout
実際に実行する作業に集中する方が便利です。)
通常、出力()をリダイレクトすると、>file
ファイルは「書き込み」モードで開き、ファイルが作成または消去されます。別の一般的なオプションは、>>file
ファイルの消去をスキップしてすべての出力を最後に置く「追加」モードです。1<>file
また、ファイルの消去はスキップしますが、書き込みカーソルをファイルの先頭に配置します。 (デフォルトは代わりにリダイレクトなので、1
これが必要です)。<>
stdin
stdout
このように正確に修正されるユーティリティはほとんどないため、これは時々便利です。別の場合は、置換長が元の長さとまったく同じ検索と置換です。 (より短い代替方法も機能しません。ファイルが終わりから切り取られていないためです。出力が元のファイルより短い場合、ファイルの終わりの内容はまだファイルの終わりで終わります。)