ファイル検索時のプラクティス
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エラーが返された。
http://d.hatena.ne.jp/favril/20100623/1277291145
に書いてある通り、
厳密なJSON文字列を返すJSON.stringify();にて
JSON.stringify(responseText); で返された文字列と
元々のresponseTextの内容を比較してみた。
すると、JSON.stringify(responseText); で返された文字列では、
空白と\ が削除されていた。
実際、SyntaxErrorエラーに出ていた文字の直前に / が入っていたため、
これを削除したところ、JSON.parse(); は無事エラーを出すことなくJSONオブジェクトを生成した。
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