trはアポストロフィを置き換えません。

trはアポストロフィを置き換えません。

このファイルのすべてのアポストロフィを次に変換したいと思いますX

Bob's book
Bob’s book
Bob′s book  # (Might look the same but actually different)

最初のアポストロフィは期待どおりに置き換えられます。

$ cat file | tr "'" "X"
BobXs book
Bob’s book
Bob′s book

しかし、他の2種類のアポストロフィを使用すると、奇妙なことが起こります。

$ cat file | tr "’" "X"
Bob's book
BobXXXs book
BobXX�s book

$ cat file | tr "′" "X"
Bob's book
BobXX�s book
BobXXXs book

どのように機能させるのですか?

ベストアンサー1

trバイト単位で動作します。つまり、UTF-8などのマルチバイトエンコーディングでは正しく機能しません。私が知っている唯一の解決策は、trUnicodeをサポートするバージョンを見つけたり、sed文字列置換を実行できる他のツールに切り替えることです。

おすすめ記事