プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

それは最初に思いつくのですが, いわれる通りうまく動きません. なぜなら, 「> test」によって出力をリダイレクトするときにそのファイルを出力用にオープンするため, ファイルの内容がすべて消え去ってしまうからです.


ということで, 「一旦他のファイルに出力し, しかる後に名前を変更する」という処理をすることになります. つまり
sed -e 's/aaa/bbb/g' test > test.$$ && mv test.$$ test
のようにするのがよいかと.
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/03/04 13:14

-i オプション


実装されてないsedもあるみたいですが。
--helpしてみてください。

なければ一旦別ファイルに…という#1さんのご回答で。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/04 12:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!