• ベストアンサー

ファイルの内の文字列の置換について

質問なんですが、sedコマンドを使用して文字の置換をやってみたんですが、同じファイルに置換した情報を上書きすることは可能でしょうか? 今試した例としては sed -e 's/aaa/bbb/g' test > test と試してみたんですがファイルの内容がなくなってしまっていました。 同じファイルに置換内容を入れることは可能なのでしょうか? 他の方法がある場合は教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

それは最初に思いつくのですが, いわれる通りうまく動きません. なぜなら, 「> test」によって出力をリダイレクトするときにそのファイルを出力用にオープンするため, ファイルの内容がすべて消え去ってしまうからです. ということで, 「一旦他のファイルに出力し, しかる後に名前を変更する」という処理をすることになります. つまり sed -e 's/aaa/bbb/g' test > test.$$ && mv test.$$ test のようにするのがよいかと.

barash
質問者

お礼

回答の程、ありがとうございます。 確認したところ問題なく変更されていました。もう少し調べてみますがこの方法が簡単なのでこの方法でやるのがいいかなと思います。 ありがとうございました。

その他の回答 (1)

回答No.2

-i オプション 実装されてないsedもあるみたいですが。 --helpしてみてください。 なければ一旦別ファイルに…という#1さんのご回答で。

barash
質問者

お礼

回答の程、ありがとうございます。 helpで確認しましたが、自分の環境では使用できないようなので一旦別ファイルに入れてから戻すようしてみます。 ありがとうございました。

関連するQ&A