アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして
当方、初心者で勉強の身です。ご回答頂けたら幸いです。

linuxのシェルファイルが100以上あり、こちらの全ファイル内に含まれる文字列"ABCDE"を文字列"12345"に置換をしたいと思っています。

sed コマンドで
sed -e "s/ABCDE/12345/g" *.csh
のように実行しても、画面上に変換後が表示されるだけで
その後、ファイルを見ても置換されていません。

どのようにすれば、全ファイルが修正されるのでしょうか。

以上です。回答の方をよろしくお願い致します。

A 回答 (3件)

ちょっとカッコ悪いですが、一旦ファイル(sed.sh)に書き出して、


% find . -name '*.csh' -exec echo "sed -e \"s/ABCDE/12345/g\" {} > a ; mv a {} " \; > ./sed.sh

実行する。
% sh -e ./sed.sh

っていうのは如何でしょう。
    • good
    • 0
この回答へのお礼

ご回答頂きありがとうございました。
参考になりました。

お礼日時:2009/06/08 10:43

$ sed --help


と打つと、簡単な使用方法が表示されますが、
その中の -i オプションが使えます。

$ sed -i "s/ABCDE/12345/g" *.csh
で、すべて置換されます。

ちなみに
$ sed -i.bak "s/ABCDE/12345/g" *.csh
としてやると、置換前のファイルが *.csh.bak としてバックアップされます。
    • good
    • 0
この回答へのお礼

非常にわかりやすいご回答ありがとうございました。
助かりました。

お礼日時:2009/06/08 10:42

もっと地道にやりましょう。


1) $ ls *.csh > deljcl
2) deljclの各行を下記の様に修正
sed -e "s/ABCDE/12345/g" hoge.csh > deldel; mv deldel hoge.csh
ここで、hoge.cshは各行ごとに異なることとします。
3) シェルスクリプトを実行
$ sh deljcl
これで、全て置換されているはずです。
    • good
    • 0
この回答へのお礼

ご回答頂きありがとうございました。
参考になりました。

お礼日時:2009/06/08 10:43

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