コマンドラインから 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 などの一部のプラットフォームではコマンドが失敗します。