- ベストアンサー
sed コマンドについて
はじめまして 当方、初心者で勉強の身です。ご回答頂けたら幸いです。 linuxのシェルファイルが100以上あり、こちらの全ファイル内に含まれる文字列"ABCDE"を文字列"12345"に置換をしたいと思っています。 sed コマンドで sed -e "s/ABCDE/12345/g" *.csh のように実行しても、画面上に変換後が表示されるだけで その後、ファイルを見ても置換されていません。 どのようにすれば、全ファイルが修正されるのでしょうか。 以上です。回答の方をよろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
$ sed --help と打つと、簡単な使用方法が表示されますが、 その中の -i オプションが使えます。 $ sed -i "s/ABCDE/12345/g" *.csh で、すべて置換されます。 ちなみに $ sed -i.bak "s/ABCDE/12345/g" *.csh としてやると、置換前のファイルが *.csh.bak としてバックアップされます。
その他の回答 (2)
- YkazubonY
- ベストアンサー率30% (26/86)
もっと地道にやりましょう。 1) $ ls *.csh > deljcl 2) deljclの各行を下記の様に修正 sed -e "s/ABCDE/12345/g" hoge.csh > deldel; mv deldel hoge.csh ここで、hoge.cshは各行ごとに異なることとします。 3) シェルスクリプトを実行 $ sh deljcl これで、全て置換されているはずです。
お礼
ご回答頂きありがとうございました。 参考になりました。
- qaaq
- ベストアンサー率36% (146/404)
ちょっとカッコ悪いですが、一旦ファイル(sed.sh)に書き出して、 % find . -name '*.csh' -exec echo "sed -e \"s/ABCDE/12345/g\" {} > a ; mv a {} " \; > ./sed.sh 実行する。 % sh -e ./sed.sh っていうのは如何でしょう。
お礼
ご回答頂きありがとうございました。 参考になりました。
お礼
非常にわかりやすいご回答ありがとうございました。 助かりました。