2017-02-27 10 views
0

ファイルを単語リストに分割したいのですが、それはtrを使ってかなり簡単です。しかし、それは特別なデンマーク語の文字で分割された単語であることが判明しました。翻訳:trはスカンジナビア語の文字セットを認識しません

echo København Helsingør|tr -c "[:alpha:]" "\n" K� benhavn Helsing� r

明らかに、 "O" は[:alpha:]セットのメンバーではありません。私はmacOSとLinuxで同じ結果を得ています。私は

LC_TYPE=da_DK.UTF-8 echo København Helsingør|tr -c "[:alpha:]" "\n"

でコマンドを前に置く試みたが、それは同じ結果が得られます。

+0

私はそれが 'LC_TYPE'ではなく' LC_CTYPE'だと信じています。 –

+0

また、 'echo'ではなく' tr'に設定する必要があります。 –

+0

Typo、申し訳ありません。どのようにロケールを設定しようとしても、私はLC_ALLとLANGも試みました。 – mok0

答えて

1

LC_CTYPELC_TYPEではなく)をtrechoではなく)に設定する必要があります。

$ echo "København Helsingør" | LC_CTYPE=da_DK.UTF-8 tr -c "[:alpha:]" "\n" 
København 
Helsingør 

注目すべきは、これはMacOSのネイティブtrと再現性があるときに、同じ方法を経由してLC_CTYPE=Cを設定:ので、このメカニズムは、文字クラスのロケール設定を変更することに成功したことを証明...

$ echo "København Helsingør" | LC_CTYPE=C tr -c "[:alpha:]" "\n" 
K 

benhavn 
Helsing 

r 

+0

これは自家製のGNU 'tr'の問題です。ネイティブmacOSの '/ usr/bin/tr'で正しく動作します。自家製のバージョンはロケールを無視しているようだ。なぜそれはまた別の質問です:-)ありがとう! – mok0

+1

あなたは実際にあなた自身の答えとしてそれを追加するかもしれません! –

+2

これは[GNU trの既知の問題](http://unix.stackexchange.com/questions/228558/how-to-make-tr-aware-of-non-asciiunicode-characters)です。 2008年から[バグが開いています](https://savannah.gnu.org/bugs/?23030)があります。非常に悲しいです。 –

1

解決済み。私のデフォルトである自作のGNU tr/usr/local/opt/coreutils/libexec/gnubin/tr)の問題であり、ロケールの設定を無視しているようです。ネイティブmacOSの/usr/bin/trで正しい単語分割ができます。

関連する問題