(home)

tgrep

いわゆるmulti-line grepの亜種です(実際には2行しかみません). rubyで書いてあります.有名な mgrg などが既にありますが,前者は日本語1文字の時のマッチングなど文字コード の扱いが微妙に弱い点,後者はmulti-lineのときに段落全体の表示になる点が それぞれ好みではなく - 使い方がおかしいのかもしれませんが - とりあえず 必要最低限のものをつくってみたわけです.

目次

更新情報

インストールと使い方

まず,ruby (1.6以降)が動く環境が必要です.最近のRedHatやVineなら入って いると思います.cygwinなどでもコンパイル,インストールは簡単にできます. 後は次のtgrep.rbをダウンロードして使うだけです.なお,引数および結果の 出力に使用する文字コードに合わせ,スクリプトの先頭の行

#!/usr/local/bin/ruby -Ks

を変更してください(eucの場合は-Ke,sjisの場合は-Ksとします.rubyの実行 パスも適宜変更してください).検索対象のファイルについては,自動的に変 換します.

tgrep.rb

通常の使い方は,次のようになります.

$ tgrep.rb -i -n PATTERN 

また,(grepのオプションのごく一部ですが)以下のオプションを使うことが できます.

-i
大文字,小文字を無視.
-n
行番号つきで出力.
-e
次の文字列をパターンとして扱う(-をパターンとして指定するのに便利).
-r
ディレクトリの再帰検索を行なう.

Emacsで使うには

文字コードの設定が正しければ,後は,次のようにするだけです.

(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

でも表示します.

作者

中丸 幸治