GNU/Linux >> Linux の 問題 >  >> Ubuntu

Tr:アポストロフィをASCIIに変換しますか?

trを使用して、右引用符をアポストロフィに変換しようとしています 。

tr "`echo -e '\xE2\x80\x99'`" "`echo -e '\x27'`" < a > b

aと呼ばれるUTF-8でエンコードされたファイルが与えられます この例が含まれています:

We're not a different species
“All alone?” Jeth mentioned.

OSXはBSDtrを使用します 素晴らしい結果が得られます:

We're not a different species
“All alone?” Jeth mentioned.

UbuntuはGNUtrを使用します そして、この厄介な結果を生み出します:

We'''re not a different species
''<9C>All alone?''<9D> Jeth mentioned.

Ubuntuでこの変換を行うにはどうすればよいですか?

承認された回答:

sedなどの他のツールを試すことができます :

$ sed "s/’/'/g" <a
We're not a different species
“All alone?” Jeth mentioned.

または、単純な翻訳を行っているため、yを使用します sedのコマンド :

$ sed "y/’/'/" <a
We're not a different species
“All alone?” Jeth mentioned.

GNU tr おそらく次の理由で機能しません:

現在、tr シングルバイト文字のみを完全にサポートします。
最終的にはマルチバイト文字をサポートします。その場合、-C オプションを指定すると、文字のセットを補完しますが、-c 値のセットを補完します。この区別は、
一部の値が文字ではない場合にのみ重要であり、
入力にエンコードエラーが含まれている場合に、マルチバイトエンコーディングを使用するロケールでのみ可能です。

そして マルチバイト文字です:

$ echo -n \' | wc -c
1
$ echo -n ’ | wc -c  
3

Ubuntu
  1. Ubuntu 20.04/18.04を更新するさまざまな方法

  2. UbuntuLinuxにソフトウェアをインストールするさまざまな方法

  3. さまざまな方法を使用してUbuntuのバージョンを確認する

  1. PNGストリップをGIFに変換する方法は?

  2. Ls-lがLs-sとは異なるサイズを出力するのはなぜですか?

  3. サウンドファイルをOpusに変換する方法は?

  1. Ubuntuを最新バージョンにアップグレードする3つの異なる方法

  2. 別のバージョンのパッケージをインストールしますか?

  3. UbuntuはDebianとどう違うのですか?