入力ファイルの上書き

入力ファイルの上書き

入力ファイルの内容を変換された出力に置き換えるソリューションには一時ファイルを使用するか、スポンジ便利です。

スティーブン・チャジェラス 回答これは、次のように読み書きモードでファイルを開く別の方法を示しています。

tr ' ' '\t' < file 1<> file

関連ファイルを壊さずに実際にどのように機能しますか?

ベストアンサー1

これはtrファイルサイズが変更されないために機能します。

1<>filefileオーバーレイモードで標準出力として開きます。 (<>読み取り/書き込みモードと呼ばれますが、読み取るプログラムがほとんどないため、stdout実際に実行する作業に集中する方が便利です。)

通常、出力()をリダイレクトすると、>fileファイルは「書き込み」モードで開き、ファイルが作成または消去されます。別の一般的なオプションは、>>fileファイルの消去をスキップしてすべての出力を最後に置く「追加」モードです。1<>fileまた、ファイルの消去はスキップしますが、書き込みカーソルをファイルの先頭に配置します。 (デフォルトは代わりにリダイレクトなので、1これが必要です)。<>stdinstdout

このように正確に修正されるユーティリティはほとんどないため、これは時々便利です。別の場合は、置換長が元の長さとまったく同じ検索と置換です。 (より短い代替方法も機能しません。ファイルが終わりから切り取られていないためです。出力が元のファイルより短い場合、ファイルの終わりの内容はまだファイルの終わりで終わります。)

おすすめ記事