今天,我想保留包含汉字的文件中的唯一行。我决定使用该sort实用程序,因为我熟悉该工具,并且删除文件中的重复行就像使用该-u标志一样简单。我了解到我需要更改区域设置才能sort正确使用中文字符。我注意到使用不同的区域设置会sort产生不同的行为。在这篇文章中,我展示了我的发现。
我知道删除文件中重复行的任务可以使用多种工具/编程语言来完成。虽然我感谢任何建议完成该任务的工具的人,但我更感兴趣的是了解有关语言环境的更多信息以及它们如何影响 Unix 实用程序。
\n\n以下是我的系统的区域设置。
\nlocale\nRun Code Online (Sandbox Code Playgroud)\nLANG=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=\nRun Code Online (Sandbox Code Playgroud)\n考虑以下名为main.txt
\xe4\x94\x8d\n\xe4\x8f\x9d\nRun Code Online (Sandbox Code Playgroud)\nen_US.UTF-8如果我尝试使用作为我的排序$LANG对其进行排序。我失去了行号。2
sort -u main.txt\nRun Code Online (Sandbox Code Playgroud)\n\xe4\x94\x8d\nRun Code Online (Sandbox Code Playgroud)\nLANG我已经通过设置解决了这个问题zh_CN.UTF-8。
export LANG=zh_CN.UTF-8\nsort -u main.txt\nRun Code Online (Sandbox Code Playgroud)\n\xe4\x94\x8d\n\xe4\x8f\x9d\nRun Code Online (Sandbox Code Playgroud)\n我在 Stack Overflow …