Bruce.さん、いつもお世話になっています。ありがとうございます。
> echo [TSfree:13] Re: 便利なメーラは?|mbsed -e "s/[^[]//g"
> [
なるほど!
> echo [TSfree:13] Re: 便利なメーラは?|mbsed -e "s/[^]\[]//g"
> []
なるほど? ! うむ、 キャラクタ・クラス内のエスケープというのは、 vxw
(Vz です)の方言であって、ふつう概念として存在しない、と考えを改めたの
だけど…。(改めて正解ですよ>文太くん)
> echo [TSfree:13] Re: 便利なメーラは?|mbsed -e "s/[^][]//g"
> mbsed: -e expression #1, char 10: unterminated `s' command
それでも、エスケープするしかないのか?(しかし、あれがあれば!)
以下、ありがたかったです。どっかで探さなくては、と昨晩思っておりました。
Basic Regular Expressions
http://www.opengroup.org/onlinepubs/007908799/xbd/re.html#tag_007_003_005
RE Bracket Expression
要点:
']' はキャラ・クラス内で、最初の場所、および否定の場合には '^' のあと
では、特殊な意味を失いリテラルになる。
----------
C:\>echo ]|mbsed -e "s/[]]/a/"
a
C:\>echo ]x|mbsed -e "s/[^]]/a/g"
]a
----------変な例。
> Otherwise, it terminates the bracket expression, unless it appears
> in a collating symbol (such as [.].]) or is the ending right-bracket for a
> collating symbol, equivalence class or character class.
ここが分からなかったので調べたのですが(『ハンドブック』を含め)、これ
は分からなくてよいのだ、と判断しました。
http://docs.sun.com/app/docs/doc/816-5175/regex-5?l=Ja&a=view
より引用。
A collating symbol is a collating element enclosed within bracket-
period ([..]) delimiters. Multi-character collating elements must be
represented as collating symbols when it is necessary to distinguish
them from a list of the individual characters that make up the multi-
character collating element. For example, if the string "ch" is a
collating element in the current collation sequence with the associated
collating symbol <ch>, the expression [[.ch.]] will be treated as an RE
matching the character sequence ch, while [ch] will be treated as an RE
matching c or h. Collating symbols will be recognized only inside
bracket expressions. This implies that the RE [[.ch.]]*c matches the
first to fifth character in the string chchch. If the string is not a
collating element in the current collating sequence definition, or if
the collating element has no characters associated with it, the symbol
will be treated as an invalid expression.
要点の続き:
'.' '*' '[' '\' は、[ ]の中で特殊な意味を失う。そうだ、そうだ。'['もなんだ。
'-' は、ほぼ、']'に同じ。[-ac] あるいは [ac-] 。最初か最後でイテラル。
(先頭を/[]-]/のように']'に取られる可能性があるから最後が'-'の場所っていう
のが、覚え方として良さそうですね。)
>mbsed --ver
>GNU sed version 4.1.5
> [cut]
>Modified for Win32 Japanese by moonlight-mile@...
>Build date is Sep 1 2008
ず、ずるい。上げてください〜。m(__)m m(__)m m(__)m
僕のは、これ。(;_;)
C:\>mbsed --version
GNU sed version 4.1.4
Modified for Win32 Japanese by moonlight-mile@...
Build date is Dec 6 2005
C:\>echo [TSfree:13] Re: 便利なメーラは?|onigsed -e "s/[^][]//g"
onigsed: -e expression #1, char 10: unterminated `s' command
C:\>echo [TSfree:13] Re: 便利なメーラは?|onigsed -e "s/[^]\[]//g"
[]
う、涙。同じみたいです。m(__)m
閑話休題(か?)
C:\>echo [xxxx]zzz|egsed -e "s/[^][]//g"
[]
C:\>echo [xxxx]zzz|ssed -e "s/[^][]//g"
ssed: -e expression #1, char 10: unterminated `s' command
ssed もいけませんよね。Bruce. さんにも試していただけて、バグ・レポート
がバグってないと確認できたら、Paolo さんに報告に行きたいのですが…。m(__)m
ご存じだと思いますし、既にお持ちかとも思いますが、ココです。
http://sed.sourceforge.net/grabbag/ssed/
Bunta