我想将文件拆分为单词列表,使用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"
但是结果相同。
答案 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
得到了正确的单词。