バイナリファイルのGrep機能No.14412
ramfan さん 03/04/02 09:53
 
テキストファイル以外(例えば、.dllファイルなど)をGrepで検索するとき、たまに探
せないテキストがあるのですが、回避方法、バグフィックスなどがあればご教授くだ
さい。
ちなみに、Cygwinのegrepなどで検索すれば、全て探せます。

所詮、「秀丸」は、テキストエディタなので無理なのでしょうか?

[ ]
RE:14412 バイナリファイルのGrep機能No.14413
tnobu2 さん 03/04/02 10:05
 
>テキストファイル以外(例えば、.dllファイルなど)をGrepで検索するとき、たまに
>探せないテキストがあるのですが、回避方法、バグフィックスなどがあればご教授
>ください。
>ちなみに、Cygwinのegrepなどで検索すれば、全て探せます。
>
>所詮、「秀丸」は、テキストエディタなので無理なのでしょうか?

状況がいまいちはっきりしないのですが、ファイル自体がみつからないという
ことではなくて、ファイル内のテキストデータが検索に引っ掛からないという
ことでしょうか?

それならば、テキストエディタなので無理、ということだと思います。
テキストファイル以外では文字コードやフォーマットがどのように入っている
のかわかりませんので、引っ掛からないことがあっても仕方ないです。

[ ]
RE:14412 バイナリファイルのGrep機能No.14414
たけのこ さん 03/04/02 10:08
 
たけのこです。

>所詮、「秀丸」は、テキストエディタなので無理なのでしょうか?

行き着くところはそこですが。

探そうとしている相手はShift-JISですか? だったら、秀丸の方で文字コード
の自動認識をOFFにしておけば、『それなり』に探せると思います。勿論、相手
はバイナリですから、探そうとしている文字列の直前のビット列によってはヒッ
トしません(これはcygwinでも同じコトだと思いますが)。

例えば、stringコマンドで探せない文字列なら、秀丸でも探せないと思います。

また、相手がEUCその他の場合で、文字コードの自動認識をせざるを得ない場合
は、ビット列→文字コードの過程で必ずしもターゲットの文字コードと同じにな
るとは限らないので、もっとヒットする率は低くなるでしょう。



そもそも、バイナリをgrepする意味がよく判りません。文字列を探したいだけな
らstringコマンドで十分と認識します。

(^^)/”

[ ]
RE:14412 バイナリファイルのGrep機能No.14415
アルビレオ さん 03/04/02 15:24
 
アルビレオです。

>テキストファイル以外(例えば、.dllファイルなど)をGrepで検索するとき、たまに探
>せないテキストがあるのですが、回避方法、バグフィックスなどがあればご教授くだ
>さい。

>所詮、「秀丸」は、テキストエディタなので無理なのでしょうか?

そういうことですね。
もともとバイナリファイルの閲覧/編集の機能を持っていない秀丸に検索機能だ
けバイナリ対応を期待しても難しいし、不自然だと思います。
また、秀丸が使用している正規表現検索プログラム「JRE32.DLL」はバイナリ文
字列の検索は考慮されていないため、秀丸側の修正による対応もほとんど無理だ
と思います。

>ちなみに、Cygwinのegrepなどで検索すれば、全て探せます。

たけのこさんも書いているように、文字コードの自動認識とバイナリ検索を両立
させるのはほとんど不可能です。これがegrepとの最大の違いと考えていいで
しょう。

[ ]
RE:14415 バイナリファイルのGrep機能No.14416
アルビレオ さん 03/04/02 16:16
 
アルビレオです。

追記。
egrepであれば望んだとおりの検索ができるのなら、秀丸のマクロからegrepを起
動して結果をリダイレクトするという方法もあります。
cygwinのコマンドを直接起動できるのかよくわかりませんが。

[ ]
RE:14416 バイナリファイルのGrep機能No.14417
ENCODINGSHIFTJIS さん 03/04/02 17:53
 
>cygwinのコマンドを直接起動できるのかよくわかりませんが。

メニュー>その他>プログラム実行
\cygwin\bin\grep -E o *.TXT >con
はできました。

>grep.exe --help
`egrep' means `grep -E'.  `fgrep' means `grep -F'.
ですから、 egrep は grep -E の別名のようです。
Cygwinの中では。

[ ]