[フリーソフト] バイナリファイル中からパターンを検索するプログラム「bgrep version 1.4」

grepコマンドはテキストファイル中からパターンを検索しますが、このbgrepはバイナリファイル中からパターンを検索します。

ダウンロード : http://kane.daa.jp/old_blog/freesoft/bgrep1_4.zip

以下に、readme.txtを貼り付けます。

● bgrep version 1.4 について

# 機 能    : バイナリファイル中からパターンを検索します。
# 種 別    : フリーソフト
# 配布形態   : ソースコード、Windows用実行ファイル(32bit)
# 動作確認OS  : Windows(Windows XP 32bit)/ Linux(Ubuntu 64bit)
# 作 者    : カネダック(widen関数以外)
# 作者のページ : http://kane.daa.jp/old_blog/

●謝辞&著作権

ソースコード中の widen関数は、以下のページから拝借しました。
感謝いたします。
http://ml.tietew.jp/cppll/cppll/article/4783

widen関数以外は、カネダックに著作権があります。
http://kane.daa.jp/old_blog/?p=5

●ファイル説明

・bgrep.exe : Windowsコマンドプロンプト用の実行ファイル(32bit)
・bgrep.cpp : C++ソースコード

●コンパイル例

・Visual C++
    cl bgrep.cpp /EHsc
  (Windows XP 32bit上で、Visual Studio 2010 & Boost-1.46.1でコンパイルできることを確認しました。)

・g++
    g++ -o bgrep bgrep.cpp -std=c++0x -static -lboost_program_options -lboost_system
  (Ubuntu 64bit上で、gcc-4.5.2 & Boost-1.45.0でコンパイルできることを確認しました。)

●ソースコードのエンコードの種類

Shift-JISです。ソースの改行はCRLFです
Ubuntuでコンパイルするなら、必要に応じてUTF-8に変換し、改行もLFに変換してください。

●プログラム説明

端末(Unix)、またはコマンドプロンプト(Windows)で、
引数を与えずにコマンドを叩くと、以下のように使い方と使用例が表示されます。

Usage: bgrep [-swhlv] pattern file[s]
Options:
  -s [ --string ]       string search <default>
  -w [ --wstring ]      wstring search
  -h [ --hex ]          hex search
  -l [ --list ]         list match files
  -v [ --verbose ]      display messages
Usage examples:
    (Unix) find . -type f -name '*' -print0 | xargs -0 bgrep pattern
    (Windows) dir /b /a-d /s * | xargs bgrep pattern

・-sオプション
 与えられたパターンを、そのまま文字列として検索します(=デフォルト)。
 空白を含む文字列を検索するときは、例えば Windowsコマンドプロンプトでは
 パターンをダブルクォーテーションで囲って、"Hello world" のように与えます。

・-wオプション
 パターン文字列をワイド文字列に変換して検索します。

・-hオプション
 パターンを16進文字列と解釈して検索します。
 16進文字列は、例えば Windowsコマンドプロンプトではダブルクォーテーションで
 囲って、"61 CC 62 EB 63 90" のように空白区切りで与えます。

・使用例
 引数を与えずにコマンドを叩くと、使用例(Usage examples)も表示されます。
 この使用例は、ファイル名をワイルドカードで指定して、かつサブディレクトリの
 ファイルも検索する例です。
 Unixの例は、findコマンドと xargsコマンドを、bgrepと組み合わせています。
 Windowsの例は、findコマンドの代わりに dirを使用しています。
 ただし、Windowsには xargsコマンドがないので、「Windows xargs」でググって
 Windows用の xargsを拾ってくるか、あるいは Cygwinを導入して Unixコマンドを
 使用してください。

●注意点

2Gバイト超のファイルからの検索には対応できていません。