coreutilsはutfをサポートしていますか?

coreutilsはutfをサポートしていますか?

今日使用するときは、cutUTF-8文字を1文字として扱うのではなく3バイト長なので、3文字を1文字として扱うことがわかりました。

これは通常多くのツールに当てはまります。

coreutilsUTF-8をサポートするバージョンはありますか?

私のlocale結果:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

cutこの時はできない場合があります。

echo 哈哈 | cut -c 2-
��哈

正しい出力は次のようにする必要があります

cut -cマルチバイト文字を使用する場合。

ベストアンサー1

GNU coreutilsは通常UTF-8を理解しています。たとえば、UTF-8ロケールの正しい出力ですecho 哈哈 | wc -m(このオプションは、記録上の理由でバイトではなくバイトを意味します)。3-m-c

これはのバグですcut。見ている源泉cut, cuton 文字はまったく実装されていません。-cオプションは同義語として扱われます-b

解決策はawkを使用することです。 GNU awkはUTF-8を非常にうまく処理します。

awk '{print substr($0,2,length)}'

おすすめ記事