ファイル内の検索と置換、ファイルの上書きが機能せず、ファイルが空になります 質問する

ファイル内の検索と置換、ファイルの上書きが機能せず、ファイルが空になります 質問する

コマンドラインから HTML ファイルの検索と置換を実行したいと思います。

私のコマンドは次のようになります:

sed -e s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html > index.html

これを実行して、後でファイルを見ると、空になっています。ファイルの内容が削除されました。

ファイルを再度復元した後にこれを実行すると:

sed -e s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html

stdoutファイルの内容であり、検索と置換が実行されました。

なぜこうなった?

ベストアンサー1

シェルは> index.htmlコマンド ラインでファイルを見つけると、書き込みindex.html用にファイルを開き、以前の内容をすべて消去します。

-iこれを修正するには、変更をインラインで行うオプションを渡しsed、変更をインプレースで行う前に元のファイルのバックアップを作成する必要があります。

sed -i.bak s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html

.bak がないと、Mac OSX などの一部のプラットフォームではコマンドが失敗します。

おすすめ記事