以自然方式对制表符分隔的文本文件中的字母数字和数字列进行排序。

8 浏览
0 Comments

以自然方式对制表符分隔的文本文件中的字母数字和数字列进行排序。

我正在尝试基于两列对文件进行排序。

例如:

chr19 1070019 1070020

chr16 869712 869713

chr1 1378131 1378132

chr12 189386 189387

chr4 254941 254942

chr16 1476500 1476501

chr2 1476810 1476811

chr19 313283 313284

chr17 595817 595818

chr18 656897 656898

chr19 1061829 1061830

我尝试过sort -t $\t -k1,1 2,2 ,但没有成功。

我希望输出按照第一列和第二列基于第一列进行排序。

我想要进行自然排序,而不是字典排序。

例如:

chr1 1378131 1378132

chr2 1476810 1476811

chr4 254941 254942

chr12 189386 189387

chr16 869712 869713

chr16 1476500 1476501

chr17 595817 595818

chr18 656897 656898

chr19 313283 313284

chr19 1061829 1061830

chr19 1070019 1070020

有人有任何想法吗?

0
0 Comments

问题的出现原因是在一个以制表符分隔的文本文件中,有一个包含字母和数字的列需要按照自然排序的方式进行排序。这意味着需要按照数字的大小和字母的字典顺序来排序。

解决方法是使用命令行工具中的排序命令来实现。具体的命令是sort -k1.4,1n -k2,2n file。这个命令将按照以下步骤进行排序:

1. 使用-k1.4,1n参数,将按照第一个字段的第4个字符开始的子字符串进行排序,这是因为在这个位置之前的字符都是相同的。同时,n参数表示按照数字的方式进行排序。

2. 使用-k2,2n参数,将按照第二个字段进行排序,同样采用数字的方式进行排序。

这样,排序命令将按照自然排序的方式对包含字母和数字的列进行排序。这个命令可以应用于任何包含类似列的制表符分隔的文本文件。

0