いわゆるmulti-line grepの亜種です(実際には2行しかみません). rubyで書いてあります.有名な mg や rg などが既にありますが,前者は日本語1文字の時のマッチングなど文字コード の扱いが微妙に弱い点,後者はmulti-lineのときに段落全体の表示になる点が それぞれ好みではなく - 使い方がおかしいのかもしれませんが - とりあえず 必要最低限のものをつくってみたわけです.
まず,ruby (1.6以降)が動く環境が必要です.最近のRedHatやVineなら入って いると思います.cygwinなどでもコンパイル,インストールは簡単にできます. 後は次のtgrep.rbをダウンロードして使うだけです.なお,引数および結果の 出力に使用する文字コードに合わせ,スクリプトの先頭の行
#!/usr/local/bin/ruby -Ks
を変更してください(eucの場合は-Ke,sjisの場合は-Ksとします.rubyの実行 パスも適宜変更してください).検索対象のファイルについては,自動的に変 換します.
通常の使い方は,次のようになります.
$ tgrep.rb -i -n PATTERN
また,(grepのオプションのごく一部ですが)以下のオプションを使うことが できます.
文字コードの設定が正しければ,後は,次のようにするだけです.
(setq grep-command "tgrep.rb -n -i ")
これで,M-x grepで
tgrep.rb -n -i 検索する文字列 foo.txt
と指定すれば,foo.txtの内容が
検索する文字列が1行だけ
でも,
検索する文 字列が2行に
でも表示します.同様に
tgrep.rb -n -i 'string for search' bar.txt
のように英文の場合,bar.txtの内容が
string for search
でも,
string for search
でも表示します.
中丸 幸治