回答:
その構文を使用してください:
sed 's/馑//g' file1
またはエスケープされた形式で:
sed "s/$(echo -ne '\u9991')//g" file1
(Bashの古いバージョンと一部のシェルはを理解しないためecho -e '\u9991'、最初に確認してください。)
sedグラム修飾子持って、彼らはお互いに従うとき、それはまた、すべての発生を置き換えます。また、1つの文字としてカウントする必要がありsedを参照してくださいecho -ne "馑" | wc -mできます1。バイト(wc -c)を数えると戻り3ます。あなたの質問を正しく理解しましたか?
.平均「1つの文字」または「1バイト」?
echo 馑 | sed s/...//、私に与えられます馑(何も置き換えられません)
en_US.UTF-8、では動作しませんC。
Perlはそれを行うことができます:
echo 汉典“馑”字的基本解释 | perl -CS -pe 's/\N{U+9991}/Jin/g'
-CS 標準入力、出力、エラーに対してUTF-8を有効にします。
sedUnicode をサポートする多くのバージョン:
BSD sedに関する情報を見つけることができませんでしたが、これは奇妙だと思いましたが、Unicodeもサポートしている可能性は高いと思います。残念ながら、sedどのエンコードを使用するかを指示する標準的な方法はないため、それぞれが独自の方法でこれを行います。
echo 馑 | sed s/...//何かを印刷しますか?