小编rdr*_*109的帖子

我应该使用 LANG 的什么值来“sort -u”正确处理中文字符?

    \n
  • 上下文
  • \n
  • 发现问题\n
      \n
    • 问题编号 1
    • \n
    • 问题编号 2
    • \n
    • 问题编号 3
    • \n
    \n
  • \n
  • 问题
  • \n
\n

\n

上下文

\n

今天,我想保留包含汉字的文件中的唯一行。我决定使用该sort实用程序,因为我熟悉该工具,并且删除文件中的重复行就像使用该-u标志一样简单。我了解到我需要更改区域设置才能sort正确使用中文字符。我注意到使用不同的区域设置会sort产生不同的行为。在这篇文章中,我展示了我的发现。

\n

我知道删除文件中重复行的任务可以使用多种工具/编程语言来完成。虽然我感谢任何建议完成该任务的工具的人,但我更感兴趣的是了解有关语言环境的更多信息以及它们如何影响 Unix 实用程序。

\n

\n

发现了问题

\n

\n

问题编号 1

\n

以下是我的系统的区域设置。

\n
locale\n
Run Code Online (Sandbox Code Playgroud)\n
LANG=en_US.UTF-8\nLC_CTYPE="en_US.UTF-8"\nLC_NUMERIC="en_US.UTF-8"\nLC_TIME="en_US.UTF-8"\nLC_COLLATE="en_US.UTF-8"\nLC_MONETARY="en_US.UTF-8"\nLC_MESSAGES="en_US.UTF-8"\nLC_PAPER="en_US.UTF-8"\nLC_NAME="en_US.UTF-8"\nLC_ADDRESS="en_US.UTF-8"\nLC_TELEPHONE="en_US.UTF-8"\nLC_MEASUREMENT="en_US.UTF-8"\nLC_IDENTIFICATION="en_US.UTF-8"\nLC_ALL=\n
Run Code Online (Sandbox Code Playgroud)\n

考虑以下名为main.txt

\n
\xe4\x94\x8d\n\xe4\x8f\x9d\n
Run Code Online (Sandbox Code Playgroud)\n

en_US.UTF-8如果我尝试使用作为我的排序$LANG对其进行排序。我失去了行号。2

\n
sort -u main.txt\n
Run Code Online (Sandbox Code Playgroud)\n
\xe4\x94\x8d\n
Run Code Online (Sandbox Code Playgroud)\n

LANG我已经通过设置解决了这个问题zh_CN.UTF-8

\n
export LANG=zh_CN.UTF-8\nsort -u main.txt\n
Run Code Online (Sandbox Code Playgroud)\n
\xe4\x94\x8d\n\xe4\x8f\x9d\n
Run Code Online (Sandbox Code Playgroud)\n

我在 Stack Overflow …

sort unicode locale

10
推荐指数
1
解决办法
585
查看次数

标签 统计

locale ×1

sort ×1

unicode ×1