sed で [あ-ゞ] のような日本語の文字範囲を使いたい
平仮名を判定しようと、[あ-ゞ]
という正規表現を書いたのですが、sed
(GNU sed)では使えませんでした。
(この正規表現は間違っています。平仮名の判定に真似しないで下さい。sayuriさんの回答を参照のこと)
echo "abcあいう123" |sed -re 's/^[あ-ゞ]+//g'
# エラーになる: sed: -e expression #1, char 16: Invalid collation character
GNU系のawk
やgrep
(-P
オプション付き)では使えるようなのですが、sed
はどうも駄目なようです。
[あ-ゞ]
のような正規表現の代替になる手段や、これがそのまま使えるsed
コマンドなどを探しています。
(なぜ使えないのか、という疑問もあります)
Ubuntu16.04で、en_US.UTF-8
と ja_JP.UTF-8
のロケールでテストしています。
GNU sed は PCRE(libpcre.so.3)にリンクされている物でテストしていますが、libc
のみの物でも再現しました。
locale charmap
の実行結果はテストしているen_US.UTF-8
とja_JP.UTF-8
の環境では両方とも、UTF-8
になります。