[ubuntu-jp:6131] Re: sed の正規表現

Masakazu Takahashi emasaka @ gmail.com
2019年 3月 2日 (土) 10:15:43 UTC


こんにちは。

原因まではわかりませんが、これは sed ではなく GNU libc、特にその中の
ロケール定義の違いによる挙動ではないでしょうか。

ためしに Ubuntu 16.04 用の libc-bin パッケージをダウンロードして
/usr/lib/locale/C.UTF-8/LC_COLLATE ファイルを抜き出し、Ubuntu 18.10 に
持ってきて上書きしてみたら、Ubuntu 16.04 の挙動になりました。

On Wed, Feb 27, 2019 at 9:04 PM Yoshinaga Hiroyuki
<yoshinaga.hiroyuki at nifty.com> wrote:
>
> Ubuntu というより、sed の正規表現について伺いたく投稿させてもらいます
>
> > $ lsb_release -a
> > No LSB modules are available.
> > Distributor ID:       Ubuntu
> > Description:  Ubuntu 18.10
> > Release:      18.10
> > Codename:     cosmic
> > $ sed --version
> > sed (GNU sed) 4.5
> > Copyright (C) 2018 Free Software Foundation, Inc.
> > License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
> > This is free software: you are free to change and redistribute it.
> > There is NO WARRANTY, to the extent permitted by law.
> >
> > 作者 Jay Fenlason、 Tom Lord、 Ken Pizzini、
> > および Paolo Bonzini。
> > GNU sed home page: <https://www.gnu.org/software/sed/>.
> > General help using GNU software: <https://www.gnu.org/gethelp/>.
> > E-mail bug reports to: <bug-sed at gnu.org>.
> といった環境で、かな文字を対象にしようとした所、
> > $ echo ・ | LC_COLLATE=C.UTF-8 sed -r 's/[ぁ-ゟ]/かな/'
> > かな
> といった結果になります
>
> ここで使った文字のコードは次のとおりで、なぜ「・」が置換されるのか解りません
> あ 0x3041
> ゟ 0x309F
> ・ 0x30FB
>
> > $ echo ・ | LC_COLLATE=C.UTF-8 sed -r 's/[ゞ-ゟ]/かな/'
> としても同じですが
> > $ echo ・ | LC_COLLATE=C.UTF-8 sed -r 's/[あ-ゞゟ]/かな/'
> は大丈夫なので、「ゟ」まで跨る書き方だと「・」が含まれてしまいます
>
> この辺りの事情をご存知の方、ここより〜で質問したほうが良いといった情報をお待ちしています
>
> --
> -^.~.^-   吉永博之
> ~= ^ =~-  yoshinaga.hiroyuki at nifty.com
>  ^ ~ ^ ~
>


-- 
Masakazu Takahashi (emasaka)


ubuntu-jp メーリングリストの案内