首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unix对字母数字字符和':','/‘组合的键进行排序

Unix对字母数字字符和':','/‘组合的键进行排序
EN

Stack Overflow用户
提问于 2010-11-04 10:36:47
回答 3查看 1.7K关注 0票数 5

我正在尝试使用UNIX sort命令(GNU5.97或7.4)根据ASCII码对文本文件进行排序。文件中的行只有一列,该列用作排序中的键。

代码语言:javascript
复制
chr1:110170896:NM_004037:0:1:0/1
chr1:110170897:NM_004037:0:1:0/1
chr11:10325325:chr11:0:1:0/1
chr11::0325325:chr11:0:1:0/1

:的ascii代码是58,1是49。但是,当我使用sort -k 1,1 temp.txt对文件进行排序时,输出如下所示:

代码语言:javascript
复制
chr11::0325325:chr11:0:1:0/1
chr1:110170896:NM_004037:0:1:0/1
chr1:110170897:NM_004037:0:1:0/1
chr11:10325325:chr11:0:1:0/1

从结果中,我不知道sort如何决定1:之间的顺序。如果有任何固定的顺序,第一行和第四行应该放在一起。

理想情况下,我希望根据ASCII码从左字符到右字符对键进行排序。

EN

回答 3

Stack Overflow用户

发布于 2010-11-04 10:54:27

怎么样

代码语言:javascript
复制
 sort -t : -k 1 filename

使用:作为字段分隔符

票数 3
EN

Stack Overflow用户

发布于 2010-11-04 11:04:30

从GNU排序的手册页:

* WARNING *环境指定的区域设置会影响排序顺序。设置LC_ALL=C以获取使用本机字节值的传统排序顺序。

在我的机器上使用LC_ALL=C sort text (其中text是我复制示例数据的文件)可以给出您想要的排序顺序。

仍然没有解释为什么chr11没有在原始示例中排序...

票数 3
EN

Stack Overflow用户

发布于 2010-11-04 11:08:48

sort区分区域设置。它将受到您的区域设置的影响。

您应该尝试将语言设置为C以返回到ASCII码顺序。

假设以LANG=C sort -k 1,1 temp.txt身份运行或设置您的环境变量

如果你需要一个错误顺序的解释,最好给你的locale / LANG环境找出原因。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4093443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档