先日、while( <> ){ }
的なものの Go 版ライブラリ argfを書いてみたわけだけれども、そのサンプルとして 簡単な grep (seek)を書いてみた。
https://github.com/zetamatta/experimental/tree/master/seek
(また、例によって、実験用レポジトリ experimental ですわ。バイナリなしのソースのみ)
https://github.com/zetamatta/seek
最初は必要最小限にしていたんだけど、jvgrep みたいに「検索文字列の部分をハイライト表示」できないかなと思って頑張ってみたら、Go言語のライブラリが充実していることもあって、案外簡単に出来てしまった。
で、調子にのって、自分が grep に望む機能を実装してみた。
本当に自分が必要とした機能しか入れていないので、以下のような制限がある
- オプションは
-i
(大文字・小文字を区別しない)、-r
(再帰的にファイルを検索する)だけ - 速度はあまり重視しておらず、工夫なし
- 常にカラー表示。「リダイレクトしていたらエスケープシーケンスを抑制」とか別にしない
- 色使いは jvgrep の
パクリ互換
貴殿も、オレオレ grep を作ってみませんか?