Bruce.さん、レスが遅くなりました。m(__)m
>> > \h hexadecimal digit char [0-9a-fA-F]
>> GNU sed自体が十六進表記の指定をサポートしていますので、そちらが有効に
>> なっています(\xhh)。
>
>すいません、勘違いしていました。鬼車の \h はPOSIXブラケットの[:xdigit:]
>と等価な表記ですね。
そうそう、そうなんじゃないかと思って、以下の格闘をして年末年始のバタバ
タで流れてしまっていたのです。わざわざ書かせてしまってすいませんでした。
>これは使用している鬼車のバージョン(2.4.0)では
>サポートされていませんので当然サポートされません。
これは、POSIXブラケットが、鬼車でサポートされていない、という意味です
よね。
>どうしても使いたいというなら説得してください ;-)
いえ、説得できるスキルがありません(以下の如く)。でも、もっとハイレベ
ルな人なら、入れてくれ、というのかなぁ? 以下の実験をしていても、\d, \D
は絶対要る、でも \h, \H はなぁ、と思っていました。POSIX ブラケット全体に
関しては、…。あったら安心ではありますが、是非、というレベルには、まだあ
りません。
ただ、それより、じつは先日、手元の (e)?grep が、あああ、なことに気づき
ました。『詳説』の最初が egrep からなんですよ。そこで、「\s, \t が文字ク
ラス内([\s\t] とか)では使えない egrep もある」とかあったので、ちょっと
試してみたのです。(あ、e?grepが無駄がない書き方だ。)
C:\>egrep -V
GNU grep version 2.0 + multi-byte extension 1.04
usage: egrep [-[[AB] ]<num>] [-[CEFGVchilnqsvwx]] [-W ctype=...]
[-[ef]] <expr> [<files...>]
うう、文字クラスどころか、そもそも\s, \tを許してなかった。
そして、GNU grep は 2.5 になっていて、\s, \t を許してくれて、文字グレ
ップが可能になっていることを発見してしまった(文字グレップは izgrep が最
初に装備=これ、速いんです! new grep は色もつくらしい。cgrep みたいだ)。
そして、perl-like もできるらしい。 でも、英語用の Windows 用バイナリさえ
見つからない(英語屋なものですから、それでも助かる場面もあるな、と思った
のです)。でも、あーあ、な現実。
少々前に doggy なマルチバイト grep という話があったので、あまり気乗り
する話ではないでしょうし、 「必要なら onigsed でやれば」という方法が今や
あるわけですが(さすがに色はつきませんが=別に色は要りません)、それでも、
こっちをむしろお願いできないものだろうか、などと考えておりました。やるだ
けの価値がないでしょうかね。1年の抱負ならぬ、1年1度のお祈りでした(年、
越してますしぃ。去年はいい年だったなぁ、とか。多謝です)。
余談ですが、VWX が [\s\t] を許していたので(10年前のソフトです)、け
っこうショックではありました。えー、grep も進化しようよ、と。
元に戻ると、16進数の \h, \H より、そこまでするなら、鬼車+ PCRE で、
POSIX ブラケットのほうが汎用性があるように思いますが、でも、この足し算は
半端でないコーディングだろうと思いますので、 僕個人としては、 とにかく
onigsed が、僕が必要なところできちんと動くのを確認するのが先決です。まだ、
欲しかったもののテストができていない体たらくです。すいません。でも、あり
がとうございます。(日本全国を代表してる)おねだり派なんだから、それくら
いとっととやりなさい、という申し訳ない気持ちでいます。(ご存じだと思いま
すが、FGALTS も FGALDC も今年3月で消滅の模様です。 それもあって、ここの
ところ少しバタバタしておりました m(__)m)
何はともあれ、2005年がBruce.さんにとって実り多い年になりますように!
以下、どうでもいい、テストのためのお勉強。
sed.infoより
> `\dXXX'
> Produces or matches a character whose decimal ASCII value is XXX.
>
> `\oXXX'
> Produces or matches a character whose octal ASCII value is XXX.
>
> `\xXX'
> Produces or matches a character whose hexadecimal ASCII value is
> XX.
>onigsed -n "/\x31/p" ;'1'の文字コードは、31h。これがASCII value
1 ;と呼ばれるものなんだな。
1
^Z
>onigsed -n "/\d49/p" ;31hは、10進数だと、49
1
1
^Z
>onigsed -n "/\x82\xA0/p" ;'あ'は、82A0h
あ ;ふむふむ、それで、`\xXX'って具合で
あ ;XXって2桁なんだ。
^Z
鬼車のマニュアルより。
> \d decimal digit char
> Unicode: General_Category -- Decimal_Number
> \D non decimal digit char
> \h hexadecimal digit char [0-9a-fA-F]
> \H non hexadecimal digit char