grepで日本語を使ってみる。

別件でGNU grepのソースを眺めていて、どうやらマルチバイトにはある程度対応しているみたいに見えたのでテストしました。使ったのは Cygwin64 の grep 3.1です。

同じ文章をエンコーディングを変えて保存します。シフトJIS、EUC-JP、JIS、UTF-8です。

元の文章はPIC開発でMPLAB X IDEでのフォルダツリー構成。 から抜粋しました。

いやこれじゃわからんじゃん、*.cと*.hはどこよ、という感じです。
build以下には *.oや*.o.dの中間ファイルが、dist以下には*.elfや*.hexファイルが生成されます。
それぞれdebugビルドとproductionビルド用にディレクトリが別れています。

一方、IDEのほうでは論理フォルダも管理されています。
Logical Foldersとして説明されていますが、ここでは "Header Files" や "Source Files" の名称があります。
このページの図では、"Source Files" の下に "libLCD24" というフォルダを作ってそこに個別のソースを収めています。
しかしながらこれは論理フォルダで、実際のディレクトリツリーとの関連付けは個別に行うことになります。

ただ、このページには「ものすごく柔軟性があるんでフォルダはいくつ作ってもいいよ」的なことが書いてあり、プログラマのスタイルでどうとでもなるような感じ。
早い話が物理的にはべたーっと置こうが src / include に分けようが好きにしてね、という感じなんでしょうか。

だとすれば、自分的に見通しよさそうなのはメインろループや割り込み、ロジック系は src に置いて、putch()みたいな独自のユーティリティ関数なんかは lib とかに置いて、ヘッダファイルは include に置いて、という感じでいいかなと思いました。
まる。

まずは単純な文字列の検索。
おもしろいことに、CP932なのにUTF-8(65001)の文字列が引っかかっています。
これはコードページをUTF-8にしても同じでした。

正規表現を試してみます。
どうやら簡単なものは引っかかるようです。

ところが '.' を増やしていくとだめなことがわかります。
最後のテストは、'...' と任意の3文字にマッチするように指定していて、これは「フォル」にマッチすることを期待していますが、実際にはマッチしていません。

やはりこういうのは最初からマルチバイト文字を念頭に設計されているツールを使うほうがいいのでしょう。ついついgrep使ってしまいますが。

そんなわけでおすすめは The Platinum Searcher でしょうか。

0 件のコメント:

コメントを投稿

WesternDigitalこわれた。

たぶん寿命を過ぎてるのでクレームとまではいかないのだけれど。 WesternDigitalのWD60EFRXが壊れました。モノは2014年11月に購入。ところが3年で壊れ、RMAにより2017年11月に交換したものです。BlackBlazeでも故障率がそれなりに高かったので、そう...