開発者であればGrepのお世話になることが非常に多いはずです。しかしただ文字列を検索するだけで、細かい部分は正規表現などを使って書かなければなりません。また、探し出した後の編集はエディタで行うことになります。 そこで使ってみたいのがGraspです。JavaScriptに特化した、構造を解釈できる検索コマンドです。

Graspの使い方

例えば正規表現が使えます。以下は && が使われている場合。

$ grasp 'if.test[op=&&]' a.js
2:  if (x && f(x)) { return [1, 2]; }
5:    if (xs.length && ys.length) {
10:  if (x == 3 && list[x]) {

さらに replace オプションで文字の置換もできます。

$ grasp bi --replace '{{.r}}+{{.l}}' c.js
f(y+x, z+x);

Graspは記法が特殊なので、きちんと覚えないと目的の結果が得られないでしょう。しかし一回覚えてしまえばJavaScriptのソースコードであれば自在に欲しい情報が取り出せるようになるはずです。 GraspはLiveScript製のオープンソース・ソフトウェア(MIT License)です。

Grasp - JavaScript structural search, replace, and refactor gkz/grasp: JavaScript structural search, replace, and refactor