回答:
その構文を使用してください:
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を有効にします。
sed
Unicode をサポートする多くのバージョン:
BSD sedに関する情報を見つけることができませんでしたが、これは奇妙だと思いましたが、Unicodeもサポートしている可能性は高いと思います。残念ながら、sed
どのエンコードを使用するかを指示する標準的な方法はないため、それぞれが独自の方法でこれを行います。
echo 馑 | sed s/...//
何かを印刷しますか?