翻译:tr不承认斯堪的纳维亚字符集

时间:2017-02-27 22:00:03

标签: linux macos non-ascii-characters tr

我想将文件拆分为单词列表,使用tr非常简单。然而,事实证明,这些词语是以特殊的丹麦语字符分开的,例如

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

显然,“ø”不是[:alpha:]集的成员。我在macOS和Linux上得到了相同的结果。我试过用

作为命令的前缀

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

但是结果相同。

2 个答案:

答案 0 :(得分:1)

需要为LC_CTYPE(而不是LC_TYPE)设置

tr(不是echo)。

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

值得注意的是,当通过相同的方法设置tr时,使用MacOS原生LC_CTYPE=C可以重现这一点:

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

benhavn
Helsing

r

...从而证明这种机制在修改字符类语言环境设置方面是成功的。

答案 1 :(得分:1)

解决。它是来自自制程序(tr)的GNU /usr/local/opt/coreutils/libexec/gnubin/tr的问题,这是我的默认设置,并且似乎忽略了语言环境的任何设置。我使用原生macOS' s /usr/bin/tr得到了正确的单词。