人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

複数の C++ のソースファイルに対して、一度にシンボルの置換をかけられるツールを探しています。
もし、知っている方がいらっしゃいましたら教えてください。
Linux のシェルから使えるツールでお願いいたします。

●質問者: amachang
●カテゴリ:コンピュータ インターネット
✍キーワード:C++ Linux シェル シンボル ソース
○ 状態 :終了
└ 回答数 : 12/12件

▽最新の回答へ

1 ● pahoo
●200ポイント

標準コマンドの sed と for を組み合わせてみてはどうでしょう。

◎質問者からの返答

ありがとうございます。

sed ですね。

あまり使ったことがないのですが、多少誤変換が怖い感じがします。

杞憂でしょうか。

単語の境界を指定すれば以外と誤変換は少ないのかもしれませんね。


2 ● zzz_1980
●200ポイント

b shell スクリプトです。

変換したいシンボルと変換後のシンボルは、HOGEHOGE,FUGAFUGA の部分を書き換えてください。

% cat replase.sh
#!/bin/sh
for i in $*
do
echo $i
sed -e 's/HOGEHOGE/FUGAFUGA/g' $i >__tmp$$
mv __tmp$$ $i
done
% replase.sh *.cpp
◎質問者からの返答

ありがとうございます。 sed を使った実際のコードですね。

シェルスクリプトを書くのが苦手なので、参考にさせていただきます。


3 ● buri17
●200ポイント

はずしてるかもしれませんが、GNU globalではだめですか?

http://www.gnu.org/software/global/

◎質問者からの返答

ありがとうございます。

GNU GLOBAL ってシンボルの置換も出来るのですか!

知りませんでした。

時間があるときに調べてみたいと思います。


4 ● YOSIZO
●200ポイント

GREP機能があるエディタはどうでしょう?

自分はxyzzyというエディタを使っていますが、それの「Gresreg」という機能が便利です(他のエディタでも似たような機能があるかもしれません)

通常の検索だけでなく、正規表現を使った検索/置換ができますのでかなり細かく絞り込みできます。

http://www.jsdlab.co.jp/~kamei/


置換だけのツールをお探しでしたら「JGREP」が良いかもしれないですね。

http://www.vector.co.jp/vpack/browse/pickup/pw5/pw005053.html

◎質問者からの返答

ありがとうございます。

たしかに、エディタの機能を使うというのはいいのですが、

たくさんのファイルを一度に置換したい場合がかなり多いのですよね。


5 ● ultraist
●200ポイント

ソースコードの置換は構文解析を含んでいないと不安な処理なのでsedで置換するなら

まずgrepで一覧を作って手作業で確認を行った後にsedで置換するスクリプトを書いたほうがいいと思います。

回答の条件としてあげられている「Linux のシェルから使えるツール」というのが

たくさんのファイルを一度に置換したいという理由からなら

IDEなどについているリファクタリングツールを使ったほうが確実で安心だと思います。

わたしは普段はVisualStudioの機能を使っているので、Linuxのリファクタリングツールには詳しくないですが、

こちらのエントリーではXrefactoryというC++リファクタリングツールをemacsから使う方法が紹介されています。

http://d.hatena.ne.jp/higepon/20060727/1153987269

Linuxのシェルから使えるリファクタリングツールは知らないですが、

気になったので書き込ませていただきました。

◎質問者からの返答

ありがとうございます。

まず、先に grep で一覧を作るというのは sed を使うときの安全策としてはよさそうですね

そうですね。

Linux でも Visual Studio のようなリファクタリングツールがあると一番うれしいですね。

Xrefactory を少し調べてみたいと思います。


1-5件表示/12件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ