kenji ブログ

おもにphp,javascript について書いていきます。 日が浅いPGなので、参考よりも指摘・議論用のブログになるかと思います。

ファイル検索時のプラクティス

grepツールはgrepArteeというのを使っているのですが、

複数語でor/and検索したいと思ったのでメモ。

 

検索の基本形は

find . -name "*.filetype" | xargs grep -l "searchword" とか

egrep -r 'searchword' ./  です。

 

2語でand検索したいときは、

find . -name "*.filetype" | xargs grep -l "searchword" | xargs grep -l "searchword"

とします。

egrepの方では

egrep 'searchword' ./ | egrep -r -l 'searchword' ./

さらに検索ワード追加して絞り込みたいときは  | xargs grep -l "searchword"  を

付け足していってください。

or検索は find . -name "*.filetype" | xargs grep -l "searchword\|searchword" 

       egrep -r -l 'searchword\|searchword' ./

といったところです。

 

 

### 参考 ###

UNIXの部屋 コマンド検索: xargs 〜

http://x68000.q-e-d.net/~68user/unix/pickup?xargs

 

 

 

UNIX でディレクトリ内のファイル内容に特定の文字列が含まれているものを探す方法 〜

http://weble.org/2011/01/11/unix-find-xargs-grep

 

 

 

 

〜 find/grep/xargsコマンドを使いこなす

業務で楽するためのUNIXテクニック集「検索」編 〜

http://codezine.jp/article/detail/3279

 

 

 

JSON.parse(); に渡す文字列に / (バックスラッシュ) が入っていたら SyntaxError に。

 

eval はなるだけ使わない方がいいと各所で叫ばれているので、

JSON.parse(); でJSON型文字列をオブジェクトにしてみました。

 

JSON.parse();はevalのセキュリティ上の問題を解決したうえでevalの機能を果たします。

 

「第1回 JSONってなにもの?」

http://thinkit.co.jp/article/70/1?page=0,2

 「JSON.parse()メソッドは最終的にはeval()関数でJavaScriptオブジェクトへの変換を行いますが、変換前に引数で渡されたJSONテキストがJSONの仕様に従っているかどうかをチェックし、不正なデータの場合は例外を投げます。」

 

しかし、JSON.parse(); の引数に渡す文字列が外部から取得してきたものの場合、

 文字列がJSONの仕様に従っていなければ JSON.parse(); は使えないことになります。

 

※実例※

 

eval( "(" + responseText + ")" ); でオブジェクト化できた文字列も、

 JSON.parse(responseText); では SyntaxErrorエラーが返された。

 

「JSON.parse に渡せるJSON文字列が厳密すぎて使いにくい件」

http://d.hatena.ne.jp/favril/20100623/1277291145

 に書いてある通り、

 厳密なJSON文字列を返すJSON.stringify();にて

 JSON.stringify(responseText); で返された文字列と 

 元々のresponseTextの内容を比較してみた。

 

 すると、JSON.stringify(responseText); で返された文字列では、

空白と\ が削除されていた。

 

つまり、JSON.parse();でエラーが返ってくるのは、responseText 内の空白か /  が原因ではないか?

 

実際、SyntaxErrorエラーに出ていた文字の直前に / が入っていたため、

 これを削除したところ、JSON.parse(); は無事エラーを出すことなくJSONオブジェクトを生成した。 

 

ちなみに、JSON.parse(); は IE7 では使用できないことを確認したので、

json2.jsをgitで拝借して

 <script type="text/javascript" src="./json2.js"></script>

のように読み込んでください。

 

「json2.js のススメ」

 http://www.motohasi.net/Program/JavaScript/Item1.php

 

また、性能面でも

 JSON.parseはevalに勝るので、

 JSONの仕様をうまく潜り抜けて JSON.parse(); を使ってください(゜-゜)

 

「JSON.parseとevalなどの比較とスピードテスト」

 http://tinqwill.blog59.fc2.com/blog-entry-72.html